Ogólne: Twoja sól powinna być bezpieczną losową, unikalną wartością większą niż 128 bitów (na przykład/dev/urandom). Powinno to być przechowywane w postaci zwykłego tekstu w osobnej tabeli, aby można było z niego korzystać podczas weryfikacji skrótu. Nie powinien być widoczny dla klienta.
Ogólna idea jest taka, że ty hash hasła użytkowników i sól razem i przechowywać tę wartość .. Na przykład:
SHA512(password || salt)
gdzie password
to hasło użytkowników, salt
jest generowany losowo i unikalna wartość ||
jest konkatenacją.
Następnie, gdy użytkownik zwraca, powtórz proces z podanym hasłem i porównaj to z przechowywanym hashem, aby zweryfikować tożsamość użytkownika. Jeśli wykonasz szybkie wyszukiwanie google, znajdziesz więcej informacji na temat soli i ich celu.
Edit: To jest błędne w odniesieniu do MVC przed fałszerstwem tokena (patrz odpowiedź Leviego) i mieć odczytu tego blog. Sól wstępna jest unikalną nazwą formularza lub identyfikatorem formularza (i że nie jest oznaczona ani nazwana solą na początek)
Co chcę wiedzieć, czy wartość soli zostanie wysłana do klienta, gdy używam AntiForgeryToken. Chociaż kod źródłowy wydaje się być przygotowaniem do soli, moje ograniczone umiejętności hakerskie nie były w stanie go odzyskać. Byłoby dość zawstydzająco, gdyby udało się go odzyskać, a sól mówi coś głupiego. –
Cóż, jeśli sól jest odzyskiwana, to pokonałaby ona cel samej siebie. Także, jeśli jesteś tym zainteresowany, nie wybieraj czegoś głupiego: P – Kurt
@Prowla - Mówi o soli za token przeciwdziałający fałszowaniu MVC, nie sól do hasła. To nie jest coś, co wymaga ogromnego wyrafinowania. Wystarczająco, aby udaremnić prosty atak. Z tego powodu prawie każda sól będzie do zaakceptowania. Okno ataku jest bardzo małe z fałszywymi żądaniami ze względu na sposób ich wykorzystania. –