2010-09-03 14 views
12

Mam zamiar przechowywać kilka wrażliwych informacji (SSN, konta bankowe, itp.), Więc będą oczywiście potrzebne do zaszyfrowania. Jakie strategie polecasz?Strategie szyfrowania z Django + Postgres?

Czy powinienem wykonać szyfrowanie/odszyfrowanie w samej aplikacji internetowej? Czy powinienem użyć czegoś podobnego do pgcrypto i zrobić konwersje po stronie DB? Coś jeszcze w całości?

Ponadto, jeśli uważasz, że powinienem wykonać szyfrowanie po stronie aplikacji internetowej, jakie biblioteki Python poleciłbyś?

Odpowiedz

1

Przed czym chronisz? Gdyby atakujący uzyskał dostęp do twojego systemu plików/plików DB, znalazłby sposób odszyfrowywania kluczy danych &. Ukrywanie klucza enkrypcji nie jest zadaniem łatwym (i rzadko wdrażanym w "zwykłych" aplikacjach).

Spędziłbym więcej czasu na ochronie serwera i naprawieniu wszystkich ogólnych problemów związanych z bezpieczeństwem.

+0

zgadzam i mam zamiar korzystać w pełni zarządzaną usługę uruchomić mój setup produkcji właśnie z tego powodu - wiem tylko wystarczy administracja systemu Linux, aby wiedzieć, jak mało wiem :) Mimo to, chciałbym jeszcze szyfrować pola. Uważam to za ten sam rodzaj działalności, co blokowanie drzwi do domu. Wciąż jest dość łatwo się włamać, ale dodaje trochę odstraszania. –

+0

Następnie powinieneś trzymać wszystkie swoje enskrypcje i klucze na stronie internetowej, tak, że jeśli skradziony przez DB atakujący nic nie dostanie. Jeśli pliki zostały skradzione - również nic. Więc klucz do kodu w kodzie, i szyfrowanie/dekryptowanie wszystkich danych przy użyciu AES ze standardowej biblioteki Pythona. – BarsMonster

+0

Domyślam się, że możesz umieścić swój klucz w jakiejś dziwnej lokalizacji, więc kiedy ślepo kopiuje root twojej strony, atakujący nie dostanie klucza. – BarsMonster

1

Zgadzam się, że najpierw trzeba wziąć pod uwagę ogólny model zabezpieczeń i jakie zagrożenie aleje mogą być najbardziej narażone na ryzyko, a la ten artykuł:

https://security.stackexchange.com/questions/16939/is-it-generally-a-bad-idea-to-encrypt-database-fields

ale również spojrzeć na te dla zaszyfrowanych pól w Django:

zaszyfrowany Pola: https://github.com/svetlyak40wt/django-fields

więcej zaszyfrowane pola:

https://github.com/defrex/django-encrypted-fields, https://github.com/django-extensions/django-extensions