Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Siła hasła ?!
Forum PHP.pl > Forum > PHP
rocichy
Witam!!!
Chcem zrobić skrypt który bedzie mierzył siłe/moc hasła wpisanego przez użytkownika do formularza. Troche szukałem najpier w google znalazlem kilka skryptów które były robione na AJAX-sie. I tu pytanie czy przesyłanie hasła kilka razy na serwer w celu sprawdzenia mocy jest bezpieczne? Może lepszym rozwiazaniem bedzie zrobienie to poprostu w JS?

p.s. tak przy okazji może ma ktos jakieś kryteria do oceny siły hasła?

w php takie coś znalazłem
  1. if (preg_match('#([0-9]+)#',$haslo) || preg_match('#([a-zA-Z]+)#',$haslo)) {
  2. $poziom=2;
  3. }elseif (strlen($haslo)>=8 && preg_match('#([a-zA-Z0-9]+)#',$haslo)) {
  4. $poziom=3;
  5. }elseif (strlen($haslo)>=8 && preg_match('#([a-z0-9]+)#',$haslo) && preg_match('#([A-Z]+)#',$haslo) && preg_match('#([@?!?$?_?*?])#',$haslo)) {
  6. $poziom=4;
  7. }elseif (strlen($haslo)>=12 && preg_match('#([a-z0-9]+)#',$haslo) && preg_match('#([A-Z]+)#',$haslo) && preg_match('#[@+!+$+_+*+]#',$haslo)) {
  8. $poziom=5;
  9. }
  10.  
luki100011
sprawdzaj w JS na stronie,
jak użytkownik prześle hasło na serwer sprawdź je ponownie już w php - na wypadek jakby była JS wyłączone w przeglądarce
rocichy
Cytat(luki100011 @ 9.11.2010, 09:54:56 ) *
sprawdzaj w JS na stronie,
jak użytkownik prześle hasło na serwer sprawdź je ponownie już w php - na wypadek jakby była JS wyłączone w przeglądarce

Dzieki za odpowiedz tylko nie bardzo wiem co bym mial juz w php-ie sprawdzac smile.gif jedynie co zeby pole nie bylo puste. Ten modół ma byc tylko pomocny przy tworzenuu hasła przez uzytkownika.
luki100011
jak to co questionmark.gif czy jest to silne hasło, jak ktoś nie ma aktywnej JS to wpisze hasło 123 i też będzie ok
Pawel_W
Cytat(rocichy @ 9.11.2010, 09:26:08 ) *
w php takie coś znalazłem
  1. if (preg_match('#([0-9]+)#',$haslo) || preg_match('#([a-zA-Z]+)#',$haslo)) {
  2. $poziom=2;
  3. }elseif (strlen($haslo)>=8 && preg_match('#([a-zA-Z0-9]+)#',$haslo)) {
  4. $poziom=3;
  5. }elseif (strlen($haslo)>=8 && preg_match('#([a-z0-9]+)#',$haslo) && preg_match('#([A-Z]+)#',$haslo) && preg_match('#([@?!?$?_?*?])#',$haslo)) {
  6. $poziom=4;
  7. }elseif (strlen($haslo)>=12 && preg_match('#([a-z0-9]+)#',$haslo) && preg_match('#([A-Z]+)#',$haslo) && preg_match('#[@+!+$+_+*+]#',$haslo)) {
  8. $poziom=5;
  9. }
  10.  

nie wiem, skąd wytrzasnąłeś ten kod, ale z logicznego punktu widzenia wywali zawsze albo $poziom = 2 albo nic...
thomson89
Myślę, że najlepiej dać po długości hasła i tylko "maksymalny" poziom dać (i tylko przy nim sprawdzać) jeżeli ma w sobie jakąś cyfrę, literkę dużą, małą.
moto0095
Wypróbuj to(nie jest to mój skrypt) :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  2. "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  3. <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" >
  4. <meta http-equiv="content-language" content="en" />
  5. <title>Password strength meter example</title>
  6.  
  7.  
  8. #passwordStrength
  9. {
  10. height: 20px;
  11. display:block;
  12. float:left;
  13. }
  14.  
  15. .strength0
  16. {
  17. width:250px;
  18. background:#cccccc;
  19. }
  20.  
  21. .strength1
  22. {
  23. width:50px;
  24. background:#ff0000;
  25. }
  26.  
  27. .strength2
  28. {
  29. width:100px;
  30. background:#ff5f5f;
  31. }
  32.  
  33. .strength3
  34. {
  35. width:150px;
  36. background:#56e500;
  37. }
  38.  
  39. .strength4
  40. {
  41. background:#4dcd00;
  42. width:200px;
  43. }
  44.  
  45. .strength5
  46. {
  47. background:#399800;
  48. width:250px;
  49. }
  50.  
  51.  
  52. function passwordStrength(password)
  53. {
  54. var desc = new Array();
  55. desc[0] = "Bardzo słabe";
  56. desc[1] = "Słabe";
  57. desc[2] = "Takie sobie";
  58. desc[3] = "Dobre";
  59. desc[4] = "Mocne";
  60. desc[5] = "Bardzo mocne";
  61.  
  62. var score = 0;
  63.  
  64. if (password.length > 6) score++;
  65.  
  66. if ( ( password.match(/[a-z]/) ) && ( password.match(/[A-Z]/) ) ) score++;
  67.  
  68. if (password.match(/\d+/)) score++;
  69.  
  70. if ( password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/) ) score++;
  71.  
  72. if (password.length > 8) score++;
  73.  
  74. document.getElementById("passwordDescription").innerHTML = desc[score];
  75. document.getElementById("passwordStrength").className = "strength" + score;
  76. }
  77. </head>
  78.  
  79. <form method="post" action="" id="user_registration" name="user_registration">
  80.  
  81. <input type="password" name="pass" id="pass" onkeyup="passwordStrength(this.value)"/>
  82. <br>
  83.  
  84. <div id="passwordStrength" class="strength0">
  85. <div id="passwordDescription">Podaj Hasło</div>
  86. </div>
  87. </form>
  88. </body>
  89. </html>
rocichy
Co do tego kodu PHP jaki wkleiłem to znalazłem go w internecie nawet go nie sprawdzałem za co przepraszam.

Problem rozwiązałem w JS, schemat podobny do tego co wkleił kolega moto0095 tylko troszke więcej warunków.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.