Súgó - Keresés - Tagok - Naptár
Teljes változat: Jelszavak titkosítása
PC WORLD Segélyvonal > WEBSAROK > Webszerkesztés, programozás > PHP
google
Még egy kérdésem van: Hogyan lehetne a jelszavakat titkosítani?
Egy esetben azonban le is kell kérdeznem az adatbázisból, és összehasonlítanom a felhasználó által beírttal.
De olyat is hallottam, hogy a posttal való küldés során akit érdekel, az úgyis el tudja csípni. annoyed.gif Igaz ez? Érdemes a titkosítással foglalkozni?
arpsoft
Karakterenként xor művelet.
Az algoritmus alapja:

A xor B = C
C xor B = A

Tehát ugyanazzal rutinnal elvégezhető a kódolás és a dekódolás is.
Mezofi
Én a követlezőt csinálom.
Mikor regisztrál, a változó értékét az md5() függvénnyel titkosítom és így rakom el az adatbázisba (csak egyoldalú titkosítás).
Mikor bejelentkezik a változó értékét újra md5()-el átalakítom és ezt hasonlítom össze az adatbázissal.
Gyakorlatilag a jelszó visszafejthetetlen, csak az ismeri aki adta, persze ha valakinek van hozzáférése az adatbázishoz akkor neki nem kell az eredeti jelszó!
biggrin.gif
google
Ez nagyon jó ötletnek tűnik... erről az md5 nevű eljárásról már hallottam korábban is, de egyszerűen még rákeresve sem találtam róla hasznos információt. sad.gif
egyszerűen $password = md5($HTTP_POST_VARS['password']); ?
Mezofi
Szerintem úgy is jó, nálam csak a zárójelen belül van változtatás.
$password=md5($_POST["password"]);
Elég hosszú kód lesz, ezért az adatbázisban adj neki elég karakter helyet!
Csinálj egy echo $password próbát, és meglátod az eredményt.

Az md5() A sztring MD5-típusú digitális kivonatát adja vissza.
Itt találsz róla többet
google
Tetszik. Kipróbáltam, mindenből - függetlenül attól, hogy hány karakterből áll - 32 karakteres, szuperbiztosnak tűnő stringet kreál.
Az azonos stringből mindig ugyanolyan stringet generál. Ez nagyon jó az összehasonlításkor, de...

ha ugyanaz a végeredmény, akkor visszafejthető, nem? Például megjegyzem az ilyen láncot, és ha valahol ezt látom, akkor tudom, miből készült. roll.gif Értelmesebben megfogalmazva, akkor lehet olyan programot írni, amely véletlenszerű jelszavakat generál, ezeket md5-tel titkosítva eltárolja egy adatbázisban, majd minden beírt - md5-tel titkosított jelszónál - visszakeres, hozott-e ő is már létre ugyanilyen stringet. És ha igen, akkor ott van mellette a kiindulási alap is, a titkosítatlan jelszó. roll.gif
Mezofi
De, ha nem mindig ugyanazt a kódot eredményezi akkor nem fogja tudni összehasonlítani az adatbáziban lévővel.

Értem, lehet egy véletlenszámmal kiegészíteni a beírt kódot, és akkor megint más a kód, de a felhasználó már nem azt a kódot kapja amit meg tud jegyezni.

A lottó csak 90 számból 5, és mégis kicsi az esélye a teli találatnak, itt még kisebb az esély annak, hogy ha megjegyzed a 32 karaktert akkor találsz egy teljesen ugyanolyan 32 karaktert mégegyszer.
Szerintem, de a feltörhetetlen kódot még keresik!

Egyébként a törvény előirja, hogy ha a személyt azonositani lehet a tárolt adatokkal, akkor ezen adatokat védeni kell, mert ha kiderül, hogy az adatok tőled szivárogtak ki megbüntetnek.
Ezért minél jobban törekedni kell a tárolt adatok biztosításával!
google
Igen, egyetértek, ráadásul ez - az igen nagy lélegzetvételű munka egyébként - nem csak a honlapom lesz, hanem egy vizsgamunkám is. Jól is néznék ki titkosítatlan jelszavakkal! biggrin.gif
ocsi
Néhány megjegyzés: minden kód visszafejthető....
DE az md5 valahogy nem karakterenként kódol tehát az 'a' betű nem mindig "oasdhfnj322" (ez csak példa) szóval ha megjegyzed a jelszavadat: almafa és tudod hogy ez md5 el kódolva mit ad... akkor ha máshol látod ezt a kódsort tudni fogod, hogy a jelszó almafa...

Egy apró megjegyzés: A jelszótitkosításra nem csak a php alkalmas, hanem az MySQL is! Nem vagyok teljesen tisztában az eljárás elvi hátterével, de a könyvem Hash-nek nevezi. Az insert into nál kell használni:
password('$_POST[jelszo]')

És úgyan így kell ugyan így kell lekérdezni is!
google
IDÉZET(ocsi @ 2005. július 26., 20:54 - kedd)
...szóval ha megjegyzed a jelszavadat: almafa és tudod hogy ez md5 el kódolva mit ad... akkor ha máshol látod ezt a kódsort tudni fogod, hogy a jelszó almafa...

Ennél viszont komolyabb, ha írsz egy programot, ami maga generál jelszavakat, majd eltárolja titkosítva, Te csak beírod a látottat, és ő megkeresi ezt, majd kiírja, miből készítette...
Persze ehhez rengeteg, több millió adat kell, dehát elvileg lehetséges...
fazy
Én használok jelszó titkosítást mind mysql mind file-ban.
az én módszerem:
<input type=password name=jelszform>
$jelszo = crypt(jelszo);
$jelszof = crypt($jelszoform);
ennek a kimenete ha:
echo $jelszo; után egy szép kis karaktersor lesz.
utána ezt tárolom valahol, és egy összehasonlítással ellenörzöm.
if ($jelszo == $jelszof) {
echo "Bejelentkeztél";
} else {
echo "hibás jelszó";

Háát röviden ennyi... (én az apache authentikálását biztonságosabbnak tartom)
Ez a tartalom egy lebutítottváltozata. A teljes változat képekkel kiegészült megtekintéséhez kérünk, kattints ide.