Autor Zpráva
SwimX
Profil
Dobrý den, s php teprve začínám. Přečetl jsem si tento threada zkusil jsem si udělat vlastní přihlašování a registraci uživatelů. Odkaz Heslo uživatele hashuji pomocí sha1(md5($heslo).md5('b3i'))

Kompletní skripty pro prihlasovani
Kompletní skripty pro registrovani

Chtěl jsem se zeptat, zda je to dosti bezbečné.. Nejde o tento příklad, to asi určitě, ale obecně, můžu to použít v něčem větším? Nebo je to snadno prolomitelné?

Děkuji
Mastodont
Profil
Není to bezpečné. Problém je především v tom, že heslo není šifrováno v prohlížeči JavaScriptem.

Kromě toho md5('b3i') vrací vždy stejný hash, v praxi se posílá "sůl", která je pokaždé jiná. Pročtěte si třeba
http://php.vrana.cz/bezpecne-prihlasovani-uzivatelu.php
SwimX
Profil
Mastodont
Kromě toho md5('b3i') vrací vždy stejný hash
To sice jo, ale útočník by neměl zjisti že šifruju zrovna b3i ne?

Děkuji, du číst :)
svadla
Profil
SwimX

clovek nikdy nevi, treba pro b3i je md5
2ddd4df641dce5edbfae940012c671d0

tak si to zkus zadat do http://gdataonline.com/seekhash.php
imploder
Profil
Mastodont
Problém je především v tom, že heslo není šifrováno v prohlížeči JavaScriptem.
To sice možné je, aby se nepřenášelo přes síť, ale kvůli tomu se pak nebude dát přihlásit bez javascriptu. Nevím, jestli se to běžně dělá, asi spíš ne. Pokud vadí nešifrovaný přenos, pak je asi lepší volba https. Ale když to není banka nebo tak něco (což tady rozhodně není), tak bych si s tím nedělal až tak hlavu. Odposlouchávání hesel odjinud ze sítě není zas tak jednoduchá záležitost.
SwimX
Posolení uživatelským jménem by mělo zabrat.
Kcko
Profil
Mastodont
Kromě toho md5('b3i') vrací vždy stejný hash, v praxi se posílá "sůl", která je pokaždé jiná. Pročtěte si třeba

A jak potom overis jeho prihlaseni? Kdyz se sul podle Tebe ma pokazde zmenit ?
Mastodont
Profil
imploder
kvůli tomu se pak nebude dát přihlásit bez javascriptu
Dá, stačí nějak odlišit formulář odesílaný přes JS (třeba vyplněním hidden pole). Pokud se někdo přihlásí bez JS, snížit oprávnění.

Kcko
Sůl si ukládáš na serveru, viz Vránův článek.
imploder
Profil
Mastodont
Pokud se někdo přihlásí bez JS, snížit oprávnění.
To je blbost, útočník se přece může přihlásit i s JS když se mu povede heslo odposlouchat. A odposlouchat (nezahashované) se mu ho povede když se uživatel přihlásí bez javascriptu a je jedno jaké tím v tu chvíli získá oprávnění.

Spíš uživatele upozornit, aby si zapnul javascript pro větší bezpečnost při posílání hesla. Nebo, pokud aplikace šifrovaný přenos vyžaduje, ho k tomu donutit.

V každém případě by už JS měl solit, aby to mělo smysl. To trochu kazí účinnost solení - algoritmus solení pak není tajný (každý si ho může přečíst v kódu stránky). Jsou vůbec v JS hashovací nebo šifrovací funkce? EDIT: jj, je to v tom Vránovém článku :)
Mastodont
Profil
imploder
Co kdyby sis taky přečetl ten Vránův článek? :-)
BetaCam
Profil
svadla
clovek nikdy nevi, treba pro b3i je md5
2ddd4df641dce5edbfae940012c671d0

tak si to zkus zadat do http://gdataonline.com/seekhash.php;


A co si tím chtěl říci?? V tomto případě je použití Rainbow Table uplně k ničemu.
Mastodont
Profil
imploder
odposlouchat se mu ho povede když se uživatel přihlásí bez javascriptu a je jedno jaké tím v tu chvíli získá oprávnění.

Pořádná aplikace samozřejmě v případě přihlášení bez JS uživateli sníží oprávnění trvale (zákaz úprav a mazání čehokoli) nebo další přihlášení nedovolí (až po ruční změně hesla adminem).
imploder
Profil
Mastodont
Pořádná aplikace samozřejmě v případě přihlášení bez JS uživateli sníží oprávnění trvale (zákaz úprav a mazání čehokoli) nebo další přihlášení nedovolí (až po ruční změně hesla adminem).
Tak to už bych si radši ten JS zapnul. Tohle uživatele akorát nasere. Než přijít o práva, to se radši nepřihlásím vůbec nebo si prostě pustím něco jiného než Lynx.
Mastodont
Profil
SwimX
útočník by neměl zjisti že šifruju zrovna b3i ne

To ne, ale proč pokaždé spouštět md5, když tam ten hash můžeš napsat přímo ...

imploder
V praxi se to většinou nedělá, ale pokud chceš bezpečný systém, tak by to tak nějak mělo vypadat.
svadla
Profil
BetaCam

reakce na To sice jo, ale útočník by neměl zjisti že šifruju zrovna b3i ne?
SwimX
Profil
myslim že odposlouchávání heslo ne serveru zatím řešit nebudu, to mě opravdu příliš netrápí.
Solit nebudu pořád tím samým řetězcem, ale například usernamem, nebo náhondým řetezcem který si pak uložím někam do databáze.

děkuji za reakce
imploder
Profil
SwimX
útočník by neměl zjisti že šifruju zrovna b3i ne?
Předpokládejme, že útočník se dostane k hashi (tj. heslu zašifrovanému md5()). Ten hash pak zadá tady a vypadne mu, že heslo je b3i - takže tak hash rozšifruje a heslo na to nepotřebuje dopředu vědět. Můžeš tam zkusit dát 32a00ab271abde5c112e05ab89447f1e - uvidíš, jaké je to heslo. Dozvíš se to proto, že jsem tam to slovo včera zahashoval a teď je uložené se svým hashem v databázi a dá se podle něj jednoduše vyhledat.
EDIT: tak teda nevím, před chvílí mi to fungovalo (mělo by vyjít "kukuřice") :|
BetaCam
Profil
imploder

Pane bože co to má s tim co společného?? Co tu furt vytahujete Rainbow Table??

Kolikrát to tu mám furt opakovat SALT není tajný tajný je pouze způsob jeho použití. Salt v podstatě "znemožňuje" použití Rainbow table.

Tady máš něco aby ses zabavil :

247d5e6924f26717475e99ae7c6d4409
4836c8dc2099baee7ad9d01097cfe50e
359a0b3f272bc171f61de902d2e194b6


Jako salt byl použit string : b3i

Sem opravdu zvědav jak z toho vyluštíš jakým třem heslům tyto hashe odpovídají.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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