Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Szyfrowanie hasła solą
Barcelona
post
Post #1





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


Witam, krążę właśnie nad zabezpieczeniem mojej strony za pomocą szyfrowania haseł solą. Dużo się o niej wspomina, jakie ma wady i zalety, ale nigdzie konkretnie nie znalazłem jakichś porad w jaki sposób mogę zastosować to szyfrowanie.
Znalazłem skrypt na openwall, pobrałem go razem z dokumentacją, ale jest ona tylko i wyłącznie w języku eng. Dogadać to się dogadam, ale czytać to już nie za bardzo (IMG:style_emoticons/default/wstydnis.gif)
Znajdzie się jakaś dobra dusza, która pomoże mi z tym problemem.

P.S. Aktualnie szyfruje hasła za pomocą md5. Czytałem że na dzień dzisiejszy nie jest to dobre zabezpieczenie (brutal force i te sprawy), jednak pomyślałem żeby przy logowaniu zastosować recaptcha od google. Myślę że w jakiś sposób zatrzymało by to próbę b-f.

Drugim moim pomysłem jest zrobienie warunków. Jeżeli hasło zaczyna się na np. literkę na to ma szyfrować za pomocą md5, a na przykład jak zaczyna się na b to już za pomocą SH1. Wiem że jest to łopatologiczne rozwiązanie, ale myślę że było by skuteczne (IMG:style_emoticons/default/smile.gif)

To na początek wrzuce przykładowy skrypt logowania
  1. $login = mysql_real_escape_string(trim($_POST['login']));
  2. $haslo = mysql_real_escape_string(trim($_POST['haslo']));
  3. $adres = $_SESSION["adres"];
  4.  
  5. if (isset($login) && $login=="") { $blad++;
  6. $komunikat .= "Login nie został podany!<br />";
  7. }
  8. if (isset($login)) {
  9. $wynik=mysql_query("SELECT * FROM logowanie WHERE login='$login'");
  10. if (mysql_num_rows($wynik)==0) { $blad++;
  11. $komunikat .= "Login <b>$login</b> nie widnieje w naszej bazie! <br />";
  12. }
  13. }
  14. if (isset($haslo) && $haslo=="") { $blad++;
  15. $komunikat .= "Hasło nie zostało podane!<br />";
  16. }
  17. if (isset($haslo)) {
  18. $haslo_spr = md5($haslo);
  19. $wynik=mysql_query("SELECT * FROM logowanie WHERE login='$login' AND haslo='$haslo_spr'");
  20. if (mysql_num_rows($wynik)==0) { $blad++;
  21. $komunikat .= "Hasło nie jest prawidłowe! <br />";
  22. }
  23. }
  24. if ($blad>0) {
  25. echo "<div class='error'>".$komunikat."</div><br/>";
  26. }


Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Im bardziej "niestandardowy" skrypt hashujący, tym lepiej. Gdyby był jeden genialny, to by już przestał być genialny, bo pod niego by pisano łamacze (IMG:style_emoticons/default/wink.gif)

Możesz losowo wybierać metodę. Przykładowo gdy ktoś wpisuje login i hasło, sprawdzasz obecność loginu w bazie. Gdy jest, pobierasz rekord i dane z nim związane. Mogą one zawierać informacje o indywidualnej soli, typie algorytmu hashującego czy wszelkich ustawionych dla danego konta rzeczach niestandardowych. Na ich podstawie sobie ustawiasz co idzie do algorytmu hashującego i jego wyjście porównujesz z hashem zapisanym w bazie.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 11:08