« 1 2
Autor Zpráva
MelkorNemesis
Profil *
Peta diky - asi mi to pomuze, zrovna sem resil jak to nacpat do podminky...takze to bude tusim nejak takto.

.
.
else if (delka <= 8 && (^[a-z0-9]+$.test(delka)) ){document.passwordstatus.innerHTML = "Slabé heslo";}
.
.
MelkorNemesis
Profil *
var delka = document.getElementById("password").length;
var obsah = document.getElementById("password").value;
else if (delka <= 8 && ([a-z0-9]+.test(obsah)) ){document.passwordstatus.innerHTML = "Slabé heslo";}

mam tento kod...
ale podle "[a-z0-9]+" jsou dobre reg vyrazy i jen "asd" nebo jen "8"..
kdyz mam [a-z]+[0-9]+ jsou dobre jen "asd8" ne "8asd"
a kdyz mam [0-9]+[a-z]+ jsou dobre jen "8asd" ne "asd8"... jak mam udelat aby vyraz fungoval kdyz zadam 8asd i asd8 nebo as8d?
MelkorNemesis
Profil *
tak uz to mam z casti vyresene. Jeste vymyslet specialni znaky a nejak to tam nacpat...
Joker
Profil
MelkorNemesis
var obsah = document.getElementById("password").value;
else if (...


To else tam zjevně nepatří
Měsíček
Profil
pak ten kód tady hoď :-)
MelkorNemesis
Profil *

function password_strong() {

source=document.getElementById("password_");
target=document.getElementById("password_status");

var delka = source.length;
var obsah = source.value;

if (delka == 0)
{return target.innerHTML = "Nezadané heslo";}

else if (delka <= 8 && ( /(d+w+|w+d+)/i.test(obsah)))
{return target.innerHTML = "Slabé heslo";}

else if (delka < 8 && delka <=12 && ( /(d+w+|w+d+)/i.test(obsah)))
{return target.innerHTML = "Středně silné heslo";}

else if (delka <12 &&
( (/(d+w+|w+d+)/i[^$.[]|()?*+{\:/;@°<>-\%#&! ~ŠŽ\_=}]+[0-9]+.test(obsah)) ||
( [^$.[]|()?*+{\:/;@°<>-\%#&!~ŠŽ\_=}]+/(d+ w+|w+d+)/i.test(obsah)))
)
{return target.innerHTML = "Silné heslo";}

}


Joker: patri, ty tecky kolem znacily kod co sem nevlozil...trochu sem to upravil, a mam chybu v tom 3tim else ifu..proste nevim jak jinak to vypsat a nelibi se tomu to [] <- kde zacinaji ty spec znaky...a nevim proc, jak jinak to napsat?
Měsíček
Profil
bylo by dobré i s html kódem :-)
MelkorNemesis
Profil *
<h1 class="style_000">*heslo:</h1>
<input type="password" name="password_" id="password_" class="a_22" onblur="passwords_check();" onkeyup="password_strong();" />
<span class="style_004" id="password_status"></span>

a je to fce password_Strong
jarko
Profil
To overenie sily hesla určite použijem to je dobrá vec!!!

nice .... tak toto už skoro bude to je super, ma napadla jedná vec skúsim niekde zohnať hashovaciu funkciu pre javascript a tak aby keď uživateľ napíše heslo sa poslal iba ten hash a nie heslo, tak ho bude ťažké odchytiť, vlastne sa bude dať odchytiť iba ten hash :) a pri sha256 sa to zatiaľ nepodarilo dešifrovať takže je to super ... pre php verziu som už sha256 zohnal napísaný v zdrojaku dám ho sem ale chcelo by to prerobiť aj do javasciptu a potom budeme nebezpečne bezpečný :D

http://www.programmeur-analyste.com/includes/classes/hash/sha256.class .php

Tu je ten hash dostupný v PHP verzií zavoláte funkciu SHA256::hash(nejaký text) a vráti vám hash :D len to nejak spraviť do javascriptu
Aleš Janda
Profil
jarko
Hashování už na klientovi je zabezpečování správným směrem, nicméně v tvém případě by se míjelo účinkem ;-)

Uživatel by napsal heslo, JavaScript ho zahashuje a odešle. Co uvidí útočník? Uživatelské jméno a ten hash hesla.
Takže na ten samý server pošle uživatelské jméno a hash hesla a voilá - je přihlášen! Na co by mu bylo původní heslo, když se stejně přihlašuje hashem?

Z toho důvodu se to dělá ještě trochu jinak. Uživatel si vyžádá tu stránku s formulářem na přihlášení. Server mu pošle ten formulář, ale zároveň vygeneruje nějaký náhodný řetězec, který pošle klientovi. Náhodný řetězec si u sebe pak zapamatuje pomocí session.
Uživatel napíše jméno, heslo. JavaScript vezme to heslo, připojí k němu ten náhodný řetězec od serveru, tento výsledný řetězec zahashuje a pošle na server. Server udělá to samé a porovná hashe.

Čili v každé chvíli se posílá jiný hash na základě toho náhodného řetězce. Útočník má smůlu, protože jemu se vygeneruje jiný náhodný řetězec a ten odchycený hash nebude fungovat.

Ovšem toto řešení má také ještě chybičku - server by musel mít uložená hesla v přímé podobě, aby mohl také spojit to heslo s náhodným řetězcem k porovnání.

Finální verze tedy je: na serveru je heslo hashované. JavaScript vezme heslo, zahashuje ho samotné (aby to bylo stejné jako na serveru), pak vezme náhodný řetězec, připojí ho k hashi a z toho celého udělá hash. A až ten odešle serveru. Ten pak může přihlášení snadno ověřit.

V takovém případě by byl odposlech prakticky k ničemu :-)
jarko
Profil
V takovém případě by byl odposlech prakticky k ničemu :-)
No super .... zasa som sa niečo nové naučil diki to ma ani nenapadlo ale toto je dobrý nápad čo si mi poradil!!!! Super nápad .... skúsim ho z realizovať a keď to bude kompletne funkčné tak dám sem kompletné zdrojáky, zabezpečíme lepšie ako banka :D

Hmm ešte k tomu dať zabezpečenie cez SSL a bude to pekne v prdeli sa tam nedostane ani ferdo mravec :D akurát ma štve to, že sha256 bude javascript dlho vytvárať možno aj niekoľko sekúnd ...

Jo našiel som sha256 aj v javascripte a na moje prekvapenie som si myslel, že javascript to bude robíť dlhšie ten hash tak nie robí to rýchlo takže to je skvelé!!!

Tu je odkaz na zdrojak hashu sha256 v javascripte
http://www.webtoolkit.info/javascript-sha256.html

Tak predsa to má háčik ..... keby niekto získal hash s MySQL databázy tak skratka požiada stránku o prihlasovanie získa náhodné číslo, pripojí ho k tomu hashu a s nova to dá previesť cez hash a pošle to na server ... týmto pádom by sa musela zabezpečiť dobre MySQL!

Ale keby ten hash získal tak nezíska heslo, aby sa mohol prihlásiť aj na iních stránkach .... hmm treba to ešte nejak domyslieť .... nemá niekto ešte lepší nápad ??
Megaloman
Profil *
Aleš Janda / jarko:
Zabezpečení hashem na straně klienta bych neviděl až tak růžově, protože klient nemusí mít zapnutý JavaScript, případně jej nemusí podporovat vůbec.

Ale budiž, řekněme, že se lze přihlásit jen se zapnutým JavaScriptem a povolenými cookies. (který blázen by dnes posílal session ID jako součást URL ;-))
Stále je tady nebezpečí útoku typu "man-in-the-middle", "session-steal", a jak poznamenal jarko, stačí prosté "vykradení" databáze. S mužem uprostřed toho bez asymetrické kryptografie moc nezmůžeme a riziko krádeže session lze minimalizovat. V tomhle případě mi příjde nebezpečnější spoléhat na nedobytnost databáze, kde naštěstí budou jen hashe, takže dojde jen k ohrožení těch služeb, které budou ukládat přihlašovací údaje do té databáze.

Když už by bylo třeba nějakou webovou službu natolik zabezpečit, použil bych SSL. Ovšem, pokud nejde (v tá webové službě) o život, zdraví nebo peníze, přijde mi vaše řešení spíše "kanón na vrabce".

Kromě toho jsou mnohem jednodušší způsoby, jak získat něčí heslo, než zrovna odposlouchávat síť a prolamovat webové aplikace...
« 1 2

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0