Nigdy nie wolno przechowywać hasła w postaci zwykłego tekstu podczas potwierdzania użytkownika lub robienia czegoś podobnego.
Ponieważ wiele osób używa tego samego hasła, jeśli atakujący odkryje bazę danych niezaszyfrowanych haseł, można ich łatwo użyć w połączeniu z pasującymi wiadomościami e-mail, aby wejść na połączoną witrynę lub konto, a nawet spróbować uzyskać dostęp do innych kont.
W dzisiejszych czasach hasła są często haszowane po podaniu hasła. Zaleca się haszować z solą i przechowywać sól razem z haszowanym hasłem.
Solenie może wydawać się jednym z etapów przepisu na brązy z haszem, ale w kryptografii odnosi się do dodawania losowych danych do danych wejściowych funkcji haszującej, aby zapewnić, że hasz zawsze zapewni unikalny wynik, nawet jeśli dane wejściowe są identyczne.
W rezultacie charakterystyczny hasz stworzony przez dodanie soli może ochronić nas przed kilkoma metodami ataku, w tym atakami na tablice haszujące, jednocześnie tłumiąc próby słownikowe i brute-force offline.
Tutaj, za pomocą fragmentów kodu, zademonstrujemy, jak używać „bcrypt” do zabezpieczania haseł.
Czym więc jest „bcrypt”?
Bcrypt to biblioteka haszująca, która obsługuje kilka języków i zapewnia specjalne szyfrowanie haseł. Aby zwiększyć bezpieczeństwo Twojego hasła, automatycznie generuje dodatkowe losowe znaki (sól) podczas szyfrowania Twojego ciągu.
Możesz także określić, ile dodatkowych znaków chcesz dodać do przychodzącego ciągu.
Biblioteka bcrypt odczytuje tylko kod bajtowy, a nie nieprzetworzone ciągi. Dlatego przed przesłaniem przychodzącego ciągu hasła do bcrypt w celu zaszyfrowania, musisz go najpierw zakodować.
Szyfrowanie i kodowanie to nie to samo. Po prostu upewnia się, że ciąg może być odczytywany maszynowo, zanim zostanie zakryty techniką szyfrowania.
Używanie bcrypt do szyfrowania hasła w Pythonie
Python sprawia, że szyfrowanie haseł bcrypt jest proste. Skoncentrujemy się na zrobieniu tego bez pomocy ram. Ale nie martw się, jeśli rozumiesz, jak zapisywać dane wejściowe użytkownika i odczytywać je z bazy danych, procedura jest taka sama we frameworkach.
Instalacja
Wystarczy skonfigurować wirtualne środowisko Pythona, a następnie użyć IDE, takiego jak PyCharm. Bibliotekę należy najpierw zainstalować:
Szyfrowanie hasła
Zobaczmy, jak używać bcrypt do szyfrowania tekstu po jego zainstalowaniu:
Wspomniany kod Pythona wykonuje i wyświetla zaszyfrowany ciąg bajtów. Ale za każdym razem, gdy uruchamiasz skrypt, wynik jest inny. Bcrypt używa tej metody, aby upewnić się, że każdy użytkownik ma hasło, które jest specjalnie zaszyfrowane.
Nawiasem mówiąc, dotyczy to szyfrowania hasła.
Porównanie i potwierdzenie hasła za pomocą Bcrypt
Co się stanie, jeśli zechcesz zapisać zaszyfrowane hasło i sprawdzić później, czy jest ono zgodne z hasłem przesłanym przez użytkownika do uwierzytelnienia?
To proste. Tylko hasło uwierzytelniające musi być porównane z wpisem bazy danych (lub w tym przypadku w pamięci).
Hasło uwierzytelniające musi być również zakodowane przed porównaniem z hasłem w bazie danych, ponieważ bcrypt może odczytywać tylko ciągi bajtów. Zasadniczo porównasz zaszyfrowane dane wejściowe uwierzytelnienia z zaszyfrowanym zaszyfrowanym hasłem, które aktualnie masz w swojej bazie danych.
Przetestujmy to, używając fikcyjnych danych wejściowych Pythona:
Po uruchomieniu powyższego kodu zostaniesz poproszony o nowe hasło. Jest to zapisywane w pamięci przez Pythona. W sekcji uwierzytelniania wpiszesz to samo hasło, które jest dla Ciebie prywatne.
Jeśli hasło zostanie porównane z tym, które zostało wcześniej zaszyfrowane i zapisane dopasowanie, Python wyśle komunikat o powodzeniu.
Jeśli nie, wypisywany jest komunikat o błędzie, a następnie dodawane jest zdanie else.
Podstawowa idea jest identyczna jak rejestracja, a następnie podanie hasła do bazy danych w celu uwierzytelnienia.
Wnioski
Nawet jeśli po prostu użyliśmy zaszyfrowanych haseł, aby pokazać, jak działa bcrypt w zwykłej pamięci krótkiej Pythona, jego rzeczywiste zastosowanie leży w aplikacjach użytkownika.
Niemniej jednak ten artykuł pokazuje podstawowe metody organizowania kodu, aby to osiągnąć, nawet w rzeczywistych okolicznościach.
Na przykład, jeśli używasz Flask, możesz podać pola rejestracji i uwierzytelniania za pomocą oddzielnych formularzy internetowych zamiast danych wejściowych.
Oczywiście porównując hasła, będziesz czytać z bazy danych zawierającej zaszyfrowane hasła przechowywane w świecie rzeczywistym.
Jonę Nitscha
Dziękuję za to proste i proste wyjaśnienie,
Bardzo mi to pomogło w moim obecnym projekcie.
Myślę, że to bardzo dobrze, że przykładowy kod jest ograniczony do absolutnego minimum i nie jest przeciążony jak wiele innych wyjaśnień.
Z poważaniem