[JS]Sprawdzanie "siły" hasła...

HTML to podstawy w dziedzinie tworzenia stron WWW, Style CSS warto opanować, bowiem za ich pomocą można dostosować odpowiednio wygląd swojej witryny WWW. Zagłębiamy się dalej i udostępniamy w tym forum możliwość zadawania pytań o JavaScript.
ODPOWIEDZ
HaWaJ
Nowy
Nowy
Posty: 159
Rejestracja: pt kwie 06, 2007 5:12 pm

[JS]Sprawdzanie "siły" hasła...

Post autor: HaWaJ »

Witam. Męczę się już z tym jakiś czas więc zwracam się z prośbą do Was :)

Próbuję napisac skrypt weryfikujący siłę hasła, lecz coś mi nie wychodzi. Prosiłbym o pomoc:

Kod: Zaznacz cały


<head>

  function val(){
      if (document.form1.pass.value.length < 5){
      document.write("Słabe");
      }
      if (document.form1.pass.value.length > 5){
      document.write("Średnie");
      }
  }
</head>

<body>
.......
<form NAME="form1" method="POST">
.......
<td>Hasło<font color="yellow">*</font></td>
<td><input name="pass" style="background-color: #AAAAAA " type="password" onChange = "return val();"></td>
.....
      <td><font color="green"><b>Siła hasła:</b></font></td>
      <td>
      <SCRIPT LANGUAGE="JavaScript">
       val();
      </SCRIPT>

Kompletnie nie wiem co mam robic. W ksiazce zbyt duzo nie jest napisane na ten temat. Z gory dziekuje.
fan_pascala
Nowy
Nowy
Posty: 59
Rejestracja: czw lip 12, 2007 7:29 pm
Lokalizacja: Niepołomice
Kontakt:

Re: [JS]Sprawdzanie "siły" hasła...

Post autor: fan_pascala »

Można by jeszcze uwzgędnić:
- ilość klas użytych znaków (małe litery, duże, cyfry)
- "odległość" między sąsiednimi znakami (ochrona przed brute force)
- to czy hasło zawiera element słownikowy (można zastosować prościutkie testy analizujące np. ilość samogłosek i spółgłosek oraz badać ich sąsiedztwo - przeciwdziałanie atakom słownikowym).
HaWaJ
Nowy
Nowy
Posty: 159
Rejestracja: pt kwie 06, 2007 5:12 pm

Re: [JS]Sprawdzanie "siły" hasła...

Post autor: HaWaJ »

Hehe troche chyba zle wytlumaczylem :) Chodzi o to, że powyższy kod raczej nie działa :) Ale dzięki za wskazówki bo o tych spółgłoskach to nie wiedziałem :)
fan_pascala
Nowy
Nowy
Posty: 59
Rejestracja: czw lip 12, 2007 7:29 pm
Lokalizacja: Niepołomice
Kontakt:

Re: [JS]Sprawdzanie "siły" hasła...

Post autor: fan_pascala »

Nieco przerobiłem twój kod, zamiast onchange ustawiłem akcję onkeypress która sprawdza aktualne hasło po każdym wciśnięciu klawisza, jeśli chodzi o poprawność to na pewno brakowało wcześniej sekcji <script > wokół funkcji val(), a wywołanie funkcji val() z użyciem metody document.write() przy rysowaniu tabelki może nie było niepoprawne ale na pewno troche dziwne.

Kod: Zaznacz cały

<head>
  <script>
  
  function val(){
      if (document.form1.pass.value.length < 5){
      document.getElementById('quality').innerHTML = "Słabe";
	  }
      if (document.form1.pass.value.length > 5){
      document.getElementById('quality').innerHTML = "Średnie";
      }
	}  
  
  </script>  
</head>

<body onload="val()">
<form NAME="form1" method="POST">
<table>
  <tr>
  <td>Hasło
    <font color="yellow">*</font>
  </td>
  <td>
    <input name="pass" style="background-color: #AAAAAA " type="password" onkeypress = "return val();">
  </td>
  <td>
    <font color="green">
	  <b>Siła hasła:</b><span id="quality"></span>
	</font>
  </td>
  </tr>
</table>  
</form>
</body>
HaWaJ
Nowy
Nowy
Posty: 159
Rejestracja: pt kwie 06, 2007 5:12 pm

Skrypt z wyświetlaniem daty...

Post autor: HaWaJ »

<script> byl tylko tutaj nie wkleilem :)
Twoj skrypt dziala, dzieki wielkie za pomoc. Widze cuda potrafi czynic getElementID - niestety nie doszedlem jeszcze do tego rozdzialu w ksiazce i za bardzo nie znam tej funkcji :) Jeszcze raz dzieki za pomoc.

edit: Żeby nie zaśmiecać forum, mam jeszcze jeden problem - mianowicie chodzi o setTimeout. Napisałem prosty skrypt z wyświetlaniem daty i jak ustawiłem czas odświeżania to tylko odświeża raz i strona robi się biała. Prosiłbym tylko o sugestię bo na gotowcach nic się nie nauczę :)

Kod: Zaznacz cały

 <SCRIPT LANGUAGE="JavaScript">
              function Data(){
                           data = new Date();
                           data2 = new Date();

                           month = data.getMonth();
                           day = data.getDate();
                           year = data.getFullYear();
                           hour = data.getHours();
                           minute = data.getMinutes();
                           second = data.getSeconds();

                              if (day < 10){
                              document.write('0');
                              }
                           document.write(day+'-');

                              if (month < 10){
                              document.write('0');
                              }
                           document.write(month+'-'+year+' ');

                              if (hour < 10){
                              document.write('0');
                              }
                           document.write(hour+':');

                              if (minute < 10){
                              document.write('0');
                              }
                           document.write(minute+':');

                              if (second < 10){
                              document.write('0');
                              }
                           document.write(second);
                           setTimeout("Data()",500);
              }
             </SCRIPT>

body:
 <SCRIPT LANGUAGE="JavaScript">
Data();
</SCRIPT>

fan_pascala
Nowy
Nowy
Posty: 59
Rejestracja: czw lip 12, 2007 7:29 pm
Lokalizacja: Niepołomice
Kontakt:

Re: [JS]Sprawdzanie "siły" hasła...

Post autor: fan_pascala »

Dokładnie :), getElementById to wg mnie najważniejsza metoda obektu document, pozwala przechwycić kazdy obiekt html'a któremu się nada identyfikator (atrybut id), jego użycie jest bardzo proste:

Kod: Zaznacz cały

<p id="napis1">Tekst próbny</p>

......................

<script>
   //Przechwycenie znacznika  <p> o identyfikatorze "napis1"
  napis = document.getElementById('napis1')
  // nadanie nowych właściwości: nowy tekst, nowy kolor
  napis.style.color = "red"
  napis.innerHTML = "Nowy <b>tekst</b> próbny"
<script>
Własność innerHTML jest też niezwykle użyteczna.
Umożliwia dynamiczne zmienianie treści znajdującej się wewnątrz przechwyconego znacznika, czyli wszystko co znajduje się pomiedzy <x id="ix"> i </x>). I właśnie ją polecałbym zamiast metody document.write().
Przyczyną wadliwego działania skryptu jest właśnie metoda write(), a nie setTimeout(), gdyż działa ona globalnie na całym dokumencie HTML, i ma tę przykrą właściwość, że jeśli jest wywoływana poraz pierwszy w momencie gdy dokument jest już wygenerowany (w skrypcie po upływie 0.5 sek), wywołuje niejawnie metodę open() (ponieważ dokument jest już zamkniety) która kasuje całą poprzednia zawartość, w tym funkcje Data().
W czasie drugiego wywołania funkcja Data() popełnia samobójstwo :wink:, ale jeszcze wyświetla datę.
W momencie wywołania :

Kod: Zaznacz cały

setTimeout("Data()",500);
funkcja Data() już nie istnieje, a setTimeout z powodu jej braku wywołuje błąd.
HaWaJ
Nowy
Nowy
Posty: 159
Rejestracja: pt kwie 06, 2007 5:12 pm

Re: [JS]Sprawdzanie "siły" hasła...

Post autor: HaWaJ »

Chyba załapałem :) Dzięki wielkie za pomoc ;)) Mam nadzieje ze kiedys bede mogl sie odwdzieczyc ;D
fan_pascala
Nowy
Nowy
Posty: 59
Rejestracja: czw lip 12, 2007 7:29 pm
Lokalizacja: Niepołomice
Kontakt:

Re: [JS]Sprawdzanie "siły" hasła...

Post autor: fan_pascala »

Nie ma sprawy :), trzymam za słowo ;)
intol
Nowy
Nowy
Posty: 42
Rejestracja: pt paź 24, 2003 1:33 pm

Re: [JS]Sprawdzanie "siły" hasła...

Post autor: intol »

Proponuję nie wyważać otwartych drzwi i znaleźć jakiś gotowy skrypt - jest wiele elementów, które wpływają na siłę hasła - warto skorzystać z gotowych rozwiązań.
ODPOWIEDZ