jelszó titkosítás
Sziasztok!
Egy olyan kérdésem lenne, hogy a weblapon amit csinálok, szeretném a jelszavakat kódolva tárolni. Viszont az md5() és sha1() eléggé elavult és simán visszafejthető.
Kitaláltam valamit és a véleményeteket kérném:A postolt jelszót amit leellenőriztem, hogy csak angol ABC kis és nagybetűk illetve számok lehetnek, beküldöm ebbe a kódba és az így készült kódot tárolom és ellenőrzöm. Ennek van értelme vagy felesleges programlassítás?
A válaszotokat előre is köszönöm!
Norbi
■ Egy olyan kérdésem lenne, hogy a weblapon amit csinálok, szeretném a jelszavakat kódolva tárolni. Viszont az md5() és sha1() eléggé elavult és simán visszafejthető.
Kitaláltam valamit és a véleményeteket kérném:
function pass_sajat($post_pass) {
$mirol = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9');
$mire = array('1','27','39','41','84','22','19','85','4','7','21','85','54','39','87','10','60','94','8','11','73','57','79','29','39','45','19','33','74','62','50','12','82','32','77','5','80','66','3','82','43','18','31','40','15','59','20','28','93','81','52','8','5','7','2','1','4','8','3','6','0','9');
$pass_new = str_replace($mirol, $mire, $post_pass);
return md5($pass_new);
}
A válaszotokat előre is köszönöm!
Norbi
Ajjaj
A kurrens jelszotitkositasi technologia a kovetkezo keppen nez ki:
A "siman visszafejthetotol" mindketto messze van, a leggyakoribb tamadas a rainbow table, amit viszont a sozas megold.
A titok nyitja az, hogy ha valaki megszerzi az EGESZ programkododat, akkor se tudjon tobbet artani a programodnak, mint ha nem tudja. A Te kodod pedig ezen egyertelmuen elbukik.
A kurrens jelszótitkosítási
Köszi az infót. Valóban nem
Szóval akkor marad a "só".
Ja és még egy: Mennyire hatásos, ha a login oldalon egy session-nel számolom a belépési próbákat és 3 hiba után letiltom a fiókot?
Köszi a választ!
Lehet
Lehet letiltani a fiokot, de gondolj bele: ha valaki szerez egy csomo account nevet (mondjuk egy forumnal) akkor az osszes usert le tudja tiltani.
En a helyedben olyasmit csinalnek, hogy 1 perc alatt 5 probalkozast lehet maximum. Ez pont eleg ahhoz, hogy meggatolja a feltoresi kiserleteket, de nem szivatja a normal usert. Ezt tovabb fokozva lehet olyat, mint amit a Google csinal, hogy 5 probalkozas utan kiraksz egy Captchat.
Lehet magasabb is, a feltörés
Így is letilthatja
hasznos, mert ha pistit meg
hasznos, mert a törő script-ek ha nem küldenek cookie-t, akkor náluk nem lesz sosem több a számláló 1-nél. (:
a lényeg, hogy lelassítsd a törés folyamatát. egy helyről csak mondjuk 3 másodpercenként engedélyezz egy felhasználónév / jelszó ellenőrzést. ugye ez sem triviális, mert ha mondjuk ip alapján szűrsz, akkor proxy mögötti júzerek rosszul járhatnak, meg ehhez adatbázis is kell. de ha felhasználónév alapján szűrsz akkor az már jó is lehet (mondjuk egy lastloginattempt mező az adatbázisban).
megcsinálhatod, hogy csak olyan embereknek engedélyezed a logint, akiknek már van vmi session változójuk (mondjuk a kezdőlapon beállítod), ez mondjuk egy timestamp-et tárol, ha ez nem elég öreg akkor akár egy sleep() vagy bármi lassít egy kicsit a folyamaton. persze egy gépről egy script ekkor is küldhet több párhuzamos kérést, különböző session cookiekkal, de így legalább nem kell adatbázis.
vannak böngésző lenyomatok is, amik jól jöhetnek azonosításhoz.
szóval mérlegelni kell, aztán választani.
mindenesetre én fiókot nem tiltanék, max IP-t de azt sem biztos.
Az ötlet egyébként nem akkora
Én simán tiltanék usert is, de vagy nem végleg, hanem néhány percre, vagy olyan megoldással, hogy viszonylag gyorsan elérhető ügyfélszolgálatot állítok a szolgáltatás mögé, ahol a user kérheti a tiltás feloldását. De ugye ez utóbbi már a pénzügyi és hasonló kategóriájú szolgáltatók szintje, ahol telefonos pin kódot is lehet használni... ;-)
Tehát akkor felesleges a
Ja és még annyi, hogy mikor letiltom a fiókot, automatikusan megy egy feloldó mail melyben egy véletlenszerűen generált azonosítót küldök el, ezt tárolom az usernél, és ha ez a 2 megegyezik a feloldó programban, akkor oldja fel a fiókot, itt tud beállítani új jelszót az user. De ha ez tényleg nem jó akkor törlöm az oldalról..
nem felesleges, csak gondold
A védelem arról szól, hogy
Nem felesleges
- A mások szivatása: gondolj arra, hogy ha ez pl. webshop lenne, akkor meg ingyen akarnának vásárolni... Szóval a lehetőségét kell elvenni a gazemberkedésnek, és akkor nem fognak szivatóra venni. Ha belegondolsz, elég neked egy genyó, és bebukod az összes látogatódat...
Sziasztok! Hát végig
Hát végig gondolva a hozzászólásokat, úgy döntöttem, hogy maradok az egyszerű beléptetésnél, az sha1() titkosításnál és elkezdem tanulni a session kezelést kicsit profibban. Azaz egy felhasználó csak akkor jelentkezhet be, ha jelenleg nem fut másik session az ő azonosítójával másik Ip címről. Szóval irány a suli!
Köszi mégegyszer
Helyes
Szerintem hasznos még - de nem túl felhasználóbarát -, ha a session-sütid lejár a böngésző bezárásakor.
Az időkorlátra is gondoltam,
Szobek
Amikor a süti
Nézz utána a kézikönyvben:
void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure]]] )
Itt a $lifetime a süti élettartama, ha 0 (nulla), akkor törlődik a böngésző bezárásakor. Addig viszont megmarad, tehát neked kell gondoskodnod mindig az előző kérés és a mostani között eltelt idő kiszámolásáról. Ez két külön dolog.
Szerk.:
Mielőtt ilyesmit csinálsz, olvasd el az itteni cikkeket a témában, valamint mindent a Manualból, amiben szerepel a session szó.
Hát igazából a sessionökkel
Szobek
Szívesen
Figyelj oda tanulás közben, hogy a session-süti nem az adatokat tárolja, azok a szerveren fájlban vannak.
Tipp
Dns-t próbáltuk utánozni pythonnyelven történt az egész.
97%ban sikeresen feltudtuk törni a weblapot.
Igaz úgy volt megírva a honlap,hogy könnyű legyen a dolgunk.
Tehát alapvető hibákat követtünk el 0 sql védelem semmi hiba kezelés.
Utána felmentem a kollégiumba és elkezdtem tervezni gőzerővel és én is eljutottam odáig,hogy nem lehet egy picit elavult már md5 és a többi hasonló függvény.
Akkor elkezdtem visszafejteni a kódokat hááááát nem volt a legkönnyebb dolog.
Saját függvényt is írtam és azt se volt könnyű visszafejteni így arra jutottam,hogy md5re teszem le a voksom és akkor jöhet az adatbázis ott volt segítségem mert nem nagyon értek hozzá.
Következő lépésem az volt,hogy a hibákat kezeljem tehát sql befecskendezést után egyből tiltás dns behatolás tiltás semmiféle php,sql kódot nem engedtem futtatni a weblapon.
Ebből azt szűrtem le,hogy nem muszáj a legdurvább rendszert kiépíteni ugyan úgy feltörhető,ha időt fordítasz rá,de gondolom pont nem a te honlapodat fogják megszállni Hackerek.
Ezt a DNS-t részletezhetnéd
Az MD5-tel az a gond, hogy mai hardvereken (lásd némely nVidia VGA például) brute force-szal is törhető elfogadható idő alatt (állítólag).
Ez persze csak akkor okoz gondot, ha valaki egyszer bejutott és hozzáfért a hash-hez.
Az MD5-tel az a gond, hogy
Meg a SHA1 is.
OFF
Én elhiszem, hogy le akarod írni, hogy mit csináltatok python-órán, de akkor légyszi tedd ezt meg egy blogban vagy egy új fórumtémában. És írd meg rendesen, mert ebből én sem tudom kitalálni, mit is csináltatok.
(Kicsit úgy tűnik, hogy talán fejedbe szállt a "mérnöki gondolkodás". Nem ez az egyetlen haszontalan kommented ma...)
offabb
Vélemény
Majd ha esetleg olyat írok, amit nem szabad, akkor Ádám vagy János vagy más kimoderál - nem te.
Amit leírtál, az szimpla
Ennek a szálnak itt vessünk
bcrypt