Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bezpieczeństwo danych w bazie
Forum PHP.pl > Forum > PHP
pablo2
Jestem na etapie planowania systemu do przechowywania danych wrażliwych. Najważniejszym kryterium jest możliwie wysoki poziom bezpieczeństwa (nawet kosztem szybkości działania). Ze względu, na fakt, ze nie ma możliwości wdrożenia projektu na serwerze, który będę w stanie w pełni skonfigurować, zakładam zwiększone ryzyko penetracji. Dlatego planuje zaszyfrować wszystkie wrażliwe dane w bazie, a klucz przechowywać na zewnętrznym serwerze (uruchomionym tylko w tym celu i nad którym będę miał kontrolę).

Wiem, że warunki są DALEKIE od idealnych, ale jest szereg powodów, które nie pozwalają na implementację lepszego rozwiązania (konieczność przechowywania danych na konkretnym serwerze klienta, etc.), dlatego proszę nie pytajcie czemu, skoro klient chce bezpieczeństwa, nie chce zrobić tego porządnie sad.gif Natomiast, bardzo proszę o Wasze uwagi i sugestie do poniższego planu:

1. Salt generowany indywidualnie dla każdego użytkownika - jak długi i jaką funkcję polecacie?
2. Hasła użytkowników - mocny hash + salt - jaką funkcję hashowania polecacie?
3. Szyfrowanie danych za pomocą enkrypcji dwukierunkowej - jaką metodę polecacie?
4. Klucz do enkrypcji danych z bazy przechowywane na serwerze zewnętrznym - tutaj najbardziej liczę na Wasze uwagi. Myślałem o wywołaniach curl, dostęp ograniczony jedynie do IP serwera głównego. Jakie dodatkowe zabezpieczenia polecacie? Może SRP?
5. Zapytania w PDO (pełna parametryzacja + rygorystyczna walidacja)

Coś jeszcze? A może w ogóle warto rozważyć inny scenariusz?
Pyton_000
A przepraszam jak masz zamiar pracować na zaszyfrowanych danych? Będziesz budował zapytania z zaszyfrowanymi danymi a po odebraniu odszyfrowywał?
pablo2
Tak. System ma służyć głównie do zapytań i miałby początkowo pobierać całą tabelę, odkodowywać i parsować dane z odpowiedniego rekordu. Rekordów będzie <500, więc PHP powinno pociągnąć w miarę płynnie.
Pyton_000
Równie dobrze możesz zaszyfrować sobie dane w pliku zamiast BD.
pablo2
Zgadza się. Tyle tylko, że zakodowane będą tylko kolumny varchar/text zawierające dane wrażliwe. Część kolumn (typu integer) nie będzie kodowana, żeby umożliwić ewentualne bardziej specyficzne zapytania, bo pewnie w przyszłości będzie taka potrzeba. W przypadku nieautoryzowanego przejęcia danych z bazy, kolumny tę będą na tyle nieznaczące, żeby nie zdradzić istotniejszych informacji o charakterze poszczególnych rekordów.
pablo2
Dzięki! A jak z tym kluczem do enkrypcji na zewnętrznym serwerze. Warto implementować takie rozwiązanie, skoro nie mam kontroli nad konfiguracją serwera baz danych ani serwera głównego łączącego się z bazą?
Pyton_000
Co do klucza to nie wiem, Nawet jeśli weźmiesz klucz na inny serwer to i tak musisz się jakoś do niego dobrać. Więc wystarczy w samej aplikacji zostawić klucz, i mieć mechanizm do jej szybkiej zmiany.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.