Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Szyfrowanie danych użytkownika w celu automatycznego logowania do systemu stron trzecich

Natknąłeś się na największy problem z szyfrowaniem danych w bazie danych:

➽ Gdzie przechowywać klucz?

Szyfrowanie nie może rozwiązać problemu zabezpieczenia danych, może jedynie „skoncentrować” je na kluczu. Gdziekolwiek przechowujesz klucz, Twoja aplikacja musi być w stanie odszyfrować dane, więc może to zrobić napastnik. Znam dwa możliwe rozwiązania tego problemu:

  1. Umieść klucz w jak najbezpieczniejszym miejscu. Oznacza to, że z pewnością powinien być umieszczony poza katalogiem www-root w niedostępnym katalogu na serwerze. W zależności od wagi danych, możesz również rozważyć outsourcing szyfrowania na inny serwer dedykowany.
  2. Nie przechowuj w ogóle klucza i czerp go z hasła użytkownika. To jedyny naprawdę bezpieczny sposób, ponieważ nawet serwer nie może wtedy odszyfrować danych. Wadą jest oczywiście to, że użytkownik musi wpisywać hasło za każdym razem, gdy korzysta z Twojej usługi. Jeśli użytkownik zmieni hasło, musisz ponownie zaszyfrować wszystkie dane. Jeśli użytkownik zapomni hasła, dane zostaną utracone.

PS Zalecam zaszyfrowanie danych przed przechowywanie go w bazie danych, ponieważ MySQL AES_ENCRYPT używa trybu ECB bez IV. Pozwala to na wyszukiwanie określonej wartości, ale jest mniej bezpieczne (jestem prawie pewien, że nie chcesz wyszukiwać według hasła).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CakePHP 1.3 - Nieznana kolumna, w której klauzula

  2. Typy danych MySQL:poznaj, których należy używać i w jaki sposób

  3. Facebook PHP SDK - Przechowuj dane użytkownika w bazie danych MYSql

  4. Zamień null na 0 w MySQL

  5. Jak możemy odróżnić LEFT OUTER JOIN od Left Join?