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
 1/11 2xSü ***** válasza:
100%

A usert nem célszerű tiltani. Illetve nem a usert kell tiltani. Ha valaki ismeri a felhasználónevedet, és ki akar veled szúrni, akkor csinál egy scriptet, ami másodpercenként küld egy bejelentkezést ugyanazzal a hibás jelszóval.


Az eredmény az, hogy a valódi user nem tud belépni.


A valódi user ismeri a saját jelszavát, így azzal lehetőséget kell neki biztosítani, hogy bármikor beléphessen, akkor is, ha más éppen megpróbálja kitalálni a jelszavát.


A megoldás: IP-t kell tiltani. Ehhez elég egy tábla, ami tartalmazza az IP-t a hibás bejelentkezések számát, és a kitiltás lejáratának idejét.


Elsőnek ellenőrzöd, hogy az adott IP szerepel-e ebben a táblában úgy, hogy a tiltás lejáratának ideje későbbi, mint a jelenlegi időpont. Ha igen, akkor tolsz neki egy üres oldalt.


Ha nem, akkor elvégzed a belépési adatok ellenőrzését. Ha helyes belépési adatok jönnek, akkor nullára állítod a hibás belépési kísérletek számát. Ha nem, akkor növeled az adott IP-re a sikertelen belépések számát. Ha ez meghaladja a küszöböt, akkor beállítod a tiltás lejáratának időpontját time() + 15*60 - ra, illetve nullázod a sikertelen belépési kísérletek számát. (A büntetés után ugyanarról a gépről azért lehessen belépni. Pl. nyilvános gép esetén ez fontos.)


Lehet tovább cizellálni, hogy naplózod, hogy y számú kísérlet után ki lépet be sikeresen, ekkor a támadó kilétére is fény derülhet. Illetve hosszabb távú naplózás során ki lehet szűrni proxykat, stb., stb…

2015. jan. 18. 02:42
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:

Azért ez is alkalmas kitolásra. Mondjuk egy céges környezetben rendszeresen be kell lépni valahová, a vicces kedvű user háromszor beírja valamelyik ismert felhasználónévvel jelszónak, hogy kaki, és máris az egész cég le van tiltva.

Igazából nem vagyok biztos benne, hogy ezzel a megoldással jobban eléred a célt, mint a név szerinti tiltással. Mindenképpen ki lehet tolni valakivel, ha ez a szándék.

2015. jan. 18. 09:48
Hasznos számodra ez a válasz?
 3/11 2xSü ***** válasza:
Attól függ, persze, hogy milyen oldalról van szó. De összességében valóban nem túl célszerű megoldás. Célszerű sütikkel kombinálni a tiltást, ha nagyon muszáj.
2015. jan. 18. 10:56
Hasznos számodra ez a válasz?
 4/11 A kérdező kommentje:

Több megoldáson is gondolkoztam, de mindig találtam valamit, amivel vagy meg lehet kerülni a korlátozást vagy túl nagy hatókörre terjed ki:

- ha cookie-ba mentem, akkor ha törli a böngészőből a cookie-kat, vagy ha egy másik böngészőből nyitja meg az oldalt akkor kikerülte a korlátot

- ha ip alapon tiltok, és mondjuk egy nyílt wifi-n vagy egy könyvtárba/iskolába/cégnél használják, akkor egy ember miatt senki nem tud belépni.

2015. jan. 18. 11:37
 5/11 anonim ***** válasza:
de nem csak egy adott felhasználót tiltasz arról az ip-ről?
2015. jan. 18. 13:40
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:
az eredeti gondolat az volt, hogy ha pl 5x elrontja a belépési adatokat, akkor meg se jeleik az űrlap, hanem egy figyelmeztető szöveg van kiírva, hogy pl próbálkozzon újra 15 perc múlva
2015. jan. 18. 14:30
 7/11 A kérdező kommentje:

de asszem, hogy úgy lesz a jó, hogy elmentem a felhasználónevet és az ip is, számolom a sikertelen belépéseket, és ha az adott ip-ről elérte a limitet a felhasználónévvel, akkor az kap egy hibaüzenetet

most ez tűnik a leglogikusabbnak

2015. jan. 18. 14:33
 8/11 2xSü ***** válasza:
100%

Ugye megint az van, hogy kérdés, hogy kik fogják látogatni az oldaladat. Mondjuk egy Minecraft szerver weboldalán némi DoS támadás ellen esetleg ér valamit.


Viszont ha van sok gép lokális hálózatba kötve – pl. egy cég belső hálózata –, akkor webszerver oldaláról ugyanazt az IP-t látod.


Mondjuk dolgozom az X cégnél. Tudom, hogy Y személy szeretné használni az oldalt. Ha ki akarok szúrni vele, akkor elkezdek bejelentkezgetni Y felhasználónevével. A webszerver ugyanazt az IP-t, ugyanazt a felhasználónevet látja tőlem is, Y-tól is. Engem különösképpen nem zavar, ha az oldal letilt pár percre. Y viszont nem tud bejelentkezni.


Az a gond, hogy ezzel a módszerrel pont azt tiltod, akit védeni akarsz. Gondolom az a cél, hogy brute force módszerrel ne lehessen megtalálni Y felhasználó jelszavát. Ha megakadályozod hogy Y felhasználói nevével kísérletet tegyen a bejelentkezésre, akkor mindenképpen őt fogod elsősorban büntetni.


Mellesleg vannak progik, amik minden kérést más proxy felé küldenek ki, így ugyanaz a kliens mindig más-más IP-ről látszik a szerveroldalon.


A sütik valóban nem adnak 100%-os megoldást, de egy Pistike ellen, aki csak próbálkozik, és mit sem tud semmiféle sütikről, az ellen lehet védelem.


Én inkább az IP-t figyelném. Ha az adott IP-ről jön kellő számú sikertelen bejelentkezés, akkor nem letiltanám a bejelentkezést, hanem hozzádobnék az login képernyőhöz egy capchát.


~ ~ ~ ~ ~ ~ ~


Meg kérdés, hogy valóban ez-e a legfontosabb biztonsági rés. Sokszor a felhasználók jelszavát nem így lopják el, hanem más eszközökkel, pl. cross-site scripting, session hijacking, sőt sokszor még csak különösebb technikai tudás sem kell hozzá. Ja, hogy Y imádja a kiskutyákat? Akkor regisztrálok egy Z nevet, szóba elegyedek vele, közben csinálok egy regisztrációköteles kiskutyás honlapot. Aztán ha már valamennyire összehaverkodtunk, akkor elküldöm neki, hogy milyen jó oldal. Jó esetben ugyanazzal a jelszóval fog oda is regisztrálni, és mivel én csináltam a honlapot, én tudni fogom ezt a jelszót.


Meg sokszor nem egy adott felhasználó jelszavát akarja valaki megszerezni, csak egy random fiókba akar bejutni. A legtöbb oldalon a felhasználók neveit könnyebb listázni. Ha ez megvan, fogom a legyakoribb jelszavakat – 12345, password, titok, stb… – és végigpróbálom az összes felhasználót vele. A te megoldásodnál ugye az a gond, hogy ez gyakorlatilag az összes felhasználó adott időre történő kitiltásához is vezethet.


~ ~ ~ ~ ~ ~ ~


Szóval amit én csinálnék:


1. Megfelelő jelszótárolást használnék, hogy akár az adatbázis megszerzésével se lehessen visszafejteni a jelszavakat. Pl. bcrypt.


2. Mindenképpen különválasztanám a megjelenítendő nevet a belépési névtől.


3. Vizsgálnám a jelszó erősségét. Pl. előírnám, hogy minimum 8 karaktert kell tartalmaznia, és mondjuk a kisbetű, nagybetű, szám, írásjel négyesből legalább kettőt, vagy hármat tartalmaznia kell.


4. Naplóznám azokat az IP-ket, ahonnan sikertelen belépés érkezik, és egy limit után hozzádobnék egy captchát a bejelentkező oldalhoz.


5. Nagyon vigyáznék, hogy XSS ellen védve legyen az oldal. Minden felhasználótól jött szöveget, adatot mindenféle szempontból ellenőrizni, kezelni kell.

2015. jan. 19. 12:03
Hasznos számodra ez a válasz?
 9/11 A kérdező kommentje:
Köszönöm a segítséget!
2015. jan. 23. 02:49
 10/11 A kérdező kommentje:

a felsorolt pontokból mind megvan valamilyen módon

1. a jelszavakat sha512-vel kódolom

2. email címmel kell bejelentkezni

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

4. a sikertelen belépéseket naplózom, a captcha-t pedig jó ötletnek tartom, szóval hozzáteszem (bár szerintem nem a hagyományosat, hanem slide captcha-t)

5. minden beviteli mező értékét ellenőrzöm (regex-el)

2015. jan. 23. 03:03
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!