2012-12-28 14 views
9

Obecnie tworzę konfigurację, aby pobrać informacje o karcie kredytowej. Poniższa struktura użyto:Ulepsz ochronę haseł podczas weryfikacji serwera.

Serwer 1:

  • MySQL ustawiony na tylko do odczytu
  • Przechowuje dane logowania użytkownika.

Używam funkcji mieszania PBKDF2, wykonanej przy użyciu klasy i opartej na this code.

Server 2:

  • MySQL ustawić się czytać i pisać
  • posiada wszystkich informacji klientom karty kredytowej użytkownik

Moje pytanie:

Jeśli serwer 1 przechowuje paswword w tym formacie: alg orithm: iteracje: sól: hash

Na przykład: sha256:1000:Pe27BkIKkBHklogp9Io80iRKtF+6koly:nrYUwOlixwJECRcjBRKwQ+MVNMTbnYnm

Jeśli jeden serwer została naruszona, to wydaje mi się, że o hasło w tym formacie stałaby się dla nich łatwe do złamania hasła do serwisu i uzyskać dostęp do informacji o karcie kredytowej użytkowników.

Czy jest to przypadek, w którym muszę użyć Mysql (AES_ENCRYPT() i AES_DECRYPT())?

Czy nad tym myślę?

Czy istnieje lepszy sposób ochrony informacji na serwerze 1?

Aktualizacja Na podstawie wypowiedzi

zbudowałem mój system firmy ogrzewania i powietrza. Każdy, kto płaci online, może przechowywać swoje informacje o cc za pomocą skróconych książek, jeśli sobie tego życzą. Mam kilku większych klientów, których rozliczamy co miesiąc w biurze, i przetwarzamy cc za pośrednictwem terminalu stacjonarnego. Klienci ci mają profile klientów na naszych serwerach, do których mają dostęp. Są to klienci, którym chcę zezwolić na przechowywanie tam informacji o cc. W ten sposób nie muszę przechowywać informacji o cc przechowywanych na papierze w naszym biurze, aby ktokolwiek mógł je znaleźć.

+10

Musisz przeczytać dokumentację PCI i postępować zgodnie z nią, jeśli rzeczywiście * przechowujesz informacje o karcie kredytowej *. – deceze

+0

W rzeczywistości nie przetwarzam cc. Potrzebuję tylko przechowywać informacje w moim systemie firmowym, dla przyszłych płatności, które są dokonywane przez skrypty online –

+6

Nie ma znaczenia, czy robisz przetwarzanie czy nie, zgodność z PCI polega na przechowywaniu szczegółów CC –

Odpowiedz

2

Szczerze mówiąc, jeśli uda mi się skompromitować serwer 1, nie będę próbował złamać tych haseł. Powinny być bezpieczne. To, co bardziej prawdopodobnie zrobiłbym, to spróbować zainstalować mój własny kod na serwerze, aby przesłać mi hasła i/lub dane karty kredytowej, gdy użytkownik się zaloguje. Na przykład załóżmy, że przetwarzasz uwierzytelnienie w pliku o nazwie login.php . Jeśli uda mi się skompromitować login.php, wówczas gdy sprawdza poprawność loginu, mogę zlecić wykonanie polecenia curl lub coś, co wyśle ​​dane logowania do mojego serwera, gdzie mogę je odebrać.

Ale dygresja ... Odpowiedź brzmi, że twoje hashowanie danych logowania użytkownika powinno być bezpieczne, jak to opisałeś. Jeśli baza danych serwera 1 jest zagrożona, powinna być prawie tak bezpieczna, jak tylko może być.Możesz dodać warstwę obfuskacji w swoim kodzie PHP, aby zrobić coś takiego jak munge w haszy soli lub coś takiego, aby ktoś z dostępem do bazy danych, ale nie do kodu, miałby o wiele trudniejsze poznanie, jaki proces użyłeś do haszyszu hasła, które pozwoliłyby hakerom próbować brutalnie wymuszać hasła, takie jak hasło, iloveu, itp. Chciałbym również, aby wysoce sugerował, że informacje o karcie kredytowej na serwerze 2 są przechowywane w zaszyfrowanym formacie przy użyciu funkcji AES_ENCRYPT() lub PHP mcrypt_encrypt().

Upewnij się, że odkażasz wszystkie dane za pośrednictwem formularzy POST, i powinieneś być dobry, aby przejść.

+0

Tak, jeśli to zrobię, zdecydowanie zaszyfruję cc. Na razie mam je zapisane w dokumencie tekstowym na dysku TrueCrypt na moim komputerze. Mam tylko 46 klientów, z którymi wystawiamy rachunki w ten sposób ... może nie warto podejmować wysiłku, aby pójść dalej. ale byłoby miło, gdyby mogli zaktualizować swoje informacje o cc na profilu użytkownika. W każdym razie dzięki za wejście –

Powiązane problemy