Zaleca się, aby nigdy nie ufał użytkownikowi i filtrować wszystkie wejście przed zapisaniem ich w bazie danych, aby uniknąć zastrzyków SQL i takich.

A co z hasłem użytkownika? Czy powinienem wykonać wszelkiego rodzaju sanitizację przed ich przechowywaniem? Jeśli to zrobię, użytkownik wpisując hasło, aby zalogować się, może nie pasować do wersji zanitowanej.

(Hasło są szyfrowane przed zapisaniem).

Jaka jest najlepsza praktyka?

2
Robert Brax 16 luty 2017, 12:30

2 odpowiedzi

Najlepsza odpowiedź

Zaleca się, aby nigdy nie ufał użytkownikowi i filtrować wszystkie wejście przed zapisaniem ich w bazie danych, aby uniknąć zastrzyków SQL i takich.

Nie, wcale. Zaleca się unikanie wtrysku SQL za pomocą przygotowanych instrukcji i uniknięcia wstrzykiwania HTML / skryptu przez prawidłowo uciekając znaki specjalne podczas wyświetlania danych.

Powinienem wykonać jakąś sanitizację przed ich przechowywaniem

Nie, nie powinieneś. I nie powinieneś też szyfrować haseł. Powinieneś zamiast tego sól i mieszkać, przy użyciu silnego algorytmu kryptograficznego jak BCRYPT.

3
JB Nizet 16 luty 2017, 11:21

Powinienem wykonać jakąś sanitizację przed ich przechowywaniem ...

Oprócz odpowiedzi JB Nizet w odniesieniu do przechowywania, ty powinien filtrować je przed przyjęciem jednego. Zastanów się, hasło1 Spełnia wymagania bezpieczeństwa NIST, ale także na [prawie?] Górnej listy haseł napastnika. Oczywiście nie chcesz, aby atakujący mógł korzystać z ich ulubionej listy haseł przeciwko tobie.

Same listy mogą być raczej duże. Widziałem wielkości 10 000, 100 000 i 10 milionów. Listy mogą być sprężone do 20kb lub 40 kB za pomocą filtra kwitnienia. Następnie, gdy użytkownik wybiera hasło, sprawdź hasło kandydujące do filtra. Filtr kwitnienia spowoduje pewne fałszywe pozytywy, ale w porządku. Wystarczy poprosić użytkownika o wybranie innego hasła.

Oto Github z listą 10 000 haseł: Noloader / Hasło-listy. Inna lista jest dostępna w Danielmicessler / Seclists. Zobacz także Peter Gutmann's Engineering Security, Rozdział 6: Hasła.

0
jww 16 luty 2017, 17:42