Hogyan, hogy egy jelszót egy oldalon
Jelszó oldalt. 1. rész inkább elméleti
Hozzáteszem két dolgot. Az első - ez hová tegye .htpasswd fájlt. Kísérletezéssel, azt tapasztaltam, hogy ha például az elérési utat a dokumentum egy hibaüzenettel (ErrorDocument) van írva azokkal a rendszer változó DocumentRoot. De az út a jelszó fájl (userfile) van írva tekintetében a ServerRoot. Amennyire megértettem, fent fel ServerRoot .htpasswd lehetetlen - „../” nem érzékelhető. Mindezt annak érdekében, hogy képes tenni a jelszó fájl, például egy szinttel feljebb gyökérkönyvtárában egy webhelyet a fájl hozzáférési hálózat nem létezik.
A második - az, hogy a szkript tudja kideríteni, ki is nyílik, és a jelszavát: $ PHP_AUTH_USER változók és a $ PHP_AUTH_PW.
Minden oldalon a zárt terület csatlakozik kódot, mint ezt a fájlt:
Az első sor a bejelentkező törli az összes karakter, kivéve a betűket, számokat, kötőjelet és aláhúzást tartalmazhat. Ezután a sorok számát kapott ellenőrizzük, és csak akkor, ha egy sort kap hozzáférést. Más esetekben a felhasználó látni fogja a böngésző ablakban kéri, hogy adja meg felhasználónevét és jelszavát. Ha a felhasználó be van jelentkezve sikeres, a tömb $ user_row mi minden információt róla.
Természetesen a példa, hogy adtam, van néhány nagy hátránya. Ne másolja egy-egy, így nem esik áldozatul a jelszó találgatás kísérlet miatt- védelmét kiválasztása nem ide
- ha a felhasználók tábla nagy, a kiválasztás a jelszó a támadó valószínűleg „töltse ki” bázis
És az utolsó a mai módszer - tárolja a titkosított adatokat egy cookie-t.
Input script ellenőrzi a felhasználónevét és jelszavát, és ad két cookie-kat. Az első - jelentkezzen be, hogy azonnal azonosítani a felhasználót (az adatbázis bejelentkezési mező, persze, egyedülálló, vagy akár egy kulcs). A második süti - lenyomatát a belépéskor, és a jelszót (a teljesség összeesküvés, én ezeket a sorokat a „Y” betű -, akkor szinte lehetetlen kiválasztani a hash :).
Minden más program, hogy a kód nem a következő. Lehetővé teszi, hogy a kérelmet az adatbázis - kiválaszt egy sort a kapott bejelentkezést. Ebből sor kerül a mező „log_time” és a jelszót, és teszi őket, a fent leírtak szerint, a hash. Összehasonlítja azt a tényt, hogy megkapta, és ha azok megegyeznek, kiad egy új cookie-hash ismét jelszóval, az idő és a „Y” betű, és egy kérést az adatbázishoz „UPDATE felhasználói SET log_time =»«WHERE login =„$ cookie_login”.
Jelszó oldalt. 2. rész: kiválasztás Lock
Amikor feltettem ezt a kérdést az utóbbi időben, én zapinali a helyén, azt mondják ezt, és lezárhatjuk a szerver „kisiklik”.
De először, zár kiválasztása. Közhelyek, de akkor is. A jelszó hossza tíz karakter a betűk a latin ábécé és a számok - egy csomó lehetőséget. Ha kiválasztja a jelszót 1.000.000 lehetőség a második, akkor lesz néhány ezer év alatt. De mivel ez a halandzsa nehéz megjegyezni, hogy gyakran a jelszó az értelmes szavakat. Néhány évvel ezelőtt megállapították, hogy a legtöbb jelszavak felveheted a segítségével a szótár 10.000 szót. Abban az időben, a féreg (vírus) jelent meg a hálózaton, amely felmászott UNIX szerverek segítségével a lyuk a védelmi és felvette a jelszavakat priveligirovanyh használó felhasználók. Unix rendszer helyesírási szótárban. Semmi nem kell, hogy húz körül!
Minden felhasználó, míg ő még nem lépett a helyes felhasználónevet és jelszót kell tekinteni rosszindulatú hacker. Azzal, amit meg kell csinálni, ha a felhasználó beír valamit rosszul?- feledékenység (ez a tisztességes helyszínek formochka „elfelejtett jelszó” küld a rendszer beállításait be ebben azonos e-mail jelszó)
- élvhajhászás ( „mert nefig”)
- jelszó találgatás szótár (a valószínűsége a sikeres kiválasztás nagy, olyan közel, hogy szükség van, különösen, ha a helyén egy kereskedelmi jellegű)
- DoS-támadások (hogy ne terhelje túl a szervert, szükség van, hogy minimalizáljuk a műveleteket, amelyeket végrehajtja a szkript ilyen esetben)
Gondolkodtam, hogyan lehet okozzon túlterhelést a szerveren, ha a védelem mechanizmusa áll fájlokat. Kiderült, hogy könnyű (mennyibe fog kerülni - egy másik kérdés). Így például, a szerver nem tud fennmaradni, ha a script megpróbál 1000 másodpercenként megnyitni a fájlokat a felvételi és írni az adatokat őket. Mert miután 5 sikertelen bejelentkezési kísérletek a felhasználó azonnal megtagadják (nélkül adatrögzítés fájl), meg kell találni az IP-200 egyedi, amelyből öt alkalommal keresik. Ez lehetséges. Tarts bannerokrutilke html-banner öt tag:
A felhasználó így azonnal öt hívás szerveren ötször ír egy fájlba (by the way, az egyes böngészők felbukkan egy ablak, hogy adja meg a felhasználónév és jelszó). Tudod, hogy egy html oldalt öt ilyen képeket és magát az oldalt keresztül behelyezve iframe látogatott honlapon (via iframe - a mező hivatkozó nem találja alig khaljavnogo tárhely támogató csapat foglalkozik majd olyan dolgok, mint ásni a naplófájlok keresési hivatkozók.) . Ezek a példák, amelyeket adtam, persze, vannak nyújtva, de a tény, hogy csak akkor veheti igénybe az ilyen hátrány a rendszer bizonyult. By the way, olyasmi, mint ez előtt történt.
És itt van a program kód:
És ahelyett, hogy elérni a fájlokat dolgozunk az adatbázisban.
Egy ilyen mechanizmus terhelés alatt lesz gyorsabb és megbízhatóbb, mint a fájlok - alapján a gyakran használt adatokat pufferelt, és közvetlenül feldolgozni a RAM-ban.
Jelszó oldalt. 3. rész: A jelszó az adatbázishoz
Eljárás jel például a MySQL. Írja meg a funkciót, például mysql_die:
Kezdetben a program jelzi, hogy a gazda adatbázis szerver, és ha szükséges, a neve az adatbázisban:
És kapcsolódni a szerverhez változók időpontja: $ PHP_AUTH_USER és $ PHP_AUTH_PW.
És mégis. Most a hátrányokat. Természetesen, az ilyen védelem megpróbálja felvenni a jelszót (elvileg lehetséges, hogy csatolja a zárat, de aztán elvesztette a szépségét módszer). Jelszót, mert abban az esetben a védelem szerver eszköz küldi az egyértelmű. De ez elég baj az egyszerű feladat.