Kezdőoldal » Számítástechnika » Weblapkészítés » Mi a legjobb és legésszerűbb...

Mi a legjobb és legésszerűbb megoldás arra, hogy bejelentkezésnél X sikertelen próbálkozás után bizonyos időre (én 15 percre gondoltam) letiltsam a felhasználót?

Figyelt kérdés

2015. jan. 18. 00:43
1 2
 11/11 2xSü ***** válasza:
100%

> 1. a jelszavakat sha512-vel kódolom


Maximum az md5 sebezhetőségét védted ki így.


Az a gond, hogy az md4, md5, sha-1, sha-2 (ugye az sha5212 is ide tartozik), de még az újabb sha-3, vagy md6 is általános célú hash algoritmus. Sok esetben a sebesség fontos. Pl. ha több ezer nagyobb fájl integritását, módosítatlanságát kell ellenőrizni, akkor fontos a sebesség. Ezek az általános célú hash algoritmusok olyan utasításokkal operálnak, amelyek egy – illetve fél – órajelciklus alatt elvégezhetőek. Tipikusan logikai műveletek ezek (or, and, xor, stb…).


De jelszavaknál pont nem jó szempont a sebesség. Minél gyorsabb egy hash algoritmus, annál több jelszót lehet adott idő alatt kipróbálni. Ráadásul ezek az utasítások olyanok, hogy egy jó GPU-val nagyon jól párhuzamosíthatóak, tehát egy GPU-t befogva jóval több jelszót lehet végigpróbálni, mint simán CPU-val.


Illetve ha simán csak egy akármilyen hash algoritmussal tárolod a jelszavakat, akkor ha valaki megszerzi az adatbázist, pusztán az egyező hash-ek alapján következtetni tud, hogy melyek azok a userek, akik a leggyakoribb jelszavakat (password, 12345678, iloveyou, stb…) használják, és akár a pontos jelszógenerálás ismerete nélkül erősen leszűkíti a próbálkozások számát. Akár 3-4 próbálkozás után talál egy olyan usert, akinek pont a „password” a jelszava.


Ezért szokták pl. besózni a jelszavakat, méghozzá egy hosszabb, és teljesen random adattal.


De felesleges keverni. Van erre az 5.5-ös PHP óta egy nagyon jó beépített megoldás:

[link]

[link]


De létezik megvalósítása 5.3-tól is: [link]


Ezek a bcrypt algoritmust használják, aminek az a lényege, hogy olyan módon generál hash-t, hogy azt nem nagyon lehet GPU-val optimalizálni, illetve a hash generálás sebessége nagy, és testre szabható. Automatikusan be is sózza a jelszavakat, tehát tényleg 1--1 sornyi kóddal nagyon biztonságos jelszókezelést lehet benne megvalósítani.


> 3. a regisztrációnál meg van szabva, hogy minimum 8 karakternek kell lennie a jelszónak


Én azért figyelném, hogy milyen karakterekből áll az a jelszó. A „password” a te kritériumodnak megfelel, mégis a legpocsékabb jelszó.


> bár szerintem nem a hagyományosat, hanem slide captcha-t


Ezek maximum a Pistikéket akadályozzák meg a tevékenységükben. Egy slider elhúzása tökéletesen jól reprodukálható. Aki egyszer meg tudja kerülni, annak többé nem okoz gondot. A CAPTCHA lényege, hogy valami olyan tevékenységet kell elvégezni, amire egy ember gyorsan és könnyedén képes, viszont egy program nem tudja ezt elvégezni. Egy eltorzított, zajos, egyéb információt is hordóz képen az emberi agy relatíve gyorsan és könnyen felismeri a betűket, számokat. Viszont egy programnak komoly nehézséget okoz, hogy kiszűrje a zajt, felismerje a formákat, szét tudja választani azt, ami a formához tartozik, kiszűrje a nem releváns információkat, és végül felismerje, hogy az adott alakzat milyen számjegynek, vagy betűnek felel meg.


Az ilyen slide captcha tökéletesen megkerülhető. Csak reprodukálni kell a kliens oldali történéseket, miközben az egeret elhúzod A pontból B pontba.


> 5. minden beviteli mező értékét ellenőrzöm


Érdemes nagyon figyelni a HTML-ként értelmezhető tartalomra is. Pl. egy bemutatkozásban simán betehetek egy <script>…</script> részt. Ha ezt a szöveget csak úgy kiírod – htmlspecialchars alkalmazása nélkül –, akkor a kliens oldalon ez egy tényleges script lesz, ami lefut, amivel mondjuk meg lehet szerezni a rendszerint sütiben tárolt session azonosítót, amin keresztül – ha nincs IP cím ellenőrzés – egy másik gép úgy tud bejelentkezve lenni a rendszerben, hogy nem is tudja a jelszót. (Lásd: [link] ) Sokszor elkövetik azt a hibát, hogy csak hébe-hóba ellenőrzik ezt. Pl. csak ott, ahol amúgy formázott bevitel van, mondjuk egy bemutatkozásnál, vagy privát üzenetnél. De mondjuk a névnél, az üzenet tárgyánál ez már nem történik meg.

2015. jan. 23. 10:58
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!