страница парола

Парола страница. Част 1. По-скоро теоретичен.

Да добавя две неща. Първо - това е мястото, където да се постави .htpasswd файл. Чрез експериментиране, открих, че ако, например, по пътя към документа със съобщение за грешка (ErrorDocument) е написано по отношение на системата за променливо DocumentRoot. Но пътят до файла с паролите (файла с потребителите) е написано по отношение на ServerRoot. Доколкото разбрах, по-горе постави ServerRoot .htpasswd невъзможно - "../" не се възприема. Всичко това се прави с цел да бъде в състояние да постави файла с паролите, например, едно ниво над основната директория на сайта, за да файл от мрежата за достъп, не съществува.

Вторият - е, че сценарият може да разбере кой го отваря и паролата си: $ PHP_AUTH_USER променливи и $ PHP_AUTH_PW.

Всяка страница на затворената зона се свързва с код като този файл:

В първия ред на данните за вход, изтрива всички символи освен букви, цифри, тирета и долни черти. Тогава броят на линиите, получени се проверява и само ако един ред е даден достъп. В други случаи, потребителят ще види в прозореца на браузъра ви накара да въведете вашето потребителско име и парола. Ако потребителят е влязъл успешно, масив $ user_row имаме цялата информация за него.

Разбира се, примерът, който дадох, има някои основни недостатъци. Не копирайте го едно към едно, така че да не падне жертва на парола познае опити, защото
1. Защитата на избор не е тук
2. ако масата за потребителите е голям, избор на паролата на нападателя е вероятно да "запълнят" база

И продължи метод днес - съхранение на криптирани данни в бисквитка.

Input скрипт проверява потребителско име и парола, както и дава две бисквитки. В първия - в акаунта си, за да незабавно да идентифицира потребителя (в областта на база данни за вход, разбира се, уникален, или дори ключ). През втората бисквитка - хашиш от времето на влизане и паролата (за пълнота на конспирация, да добавя тези редове към буквата "Y" - то е почти невъзможно да се избере най-хеш :).

Всички други програми в кода, който прави следното. Това прави искане до базата данни - избира линия до получил вход. От тази линия е на полето "log_time" и парола и да ги прави, както е описано по-горе, хашиш. сравнява с факта, че е получил, и ако те съвпадат, извежда нова хеш бисквитка, отново, с парола, време, и буквата "Y" и прави заявка към базата данни "UPDATE потребителското SET log_time = '.' КЪДЕ вход = '$ cookie_login ".

Парола страница. Част 2: Lock селекция

Когато се постави този въпрос в последно време, аз zapinali на място, те казват това и можете да заключите сървъра "провали".

Но първо, заключва селекция. Баналности, но все пак. дължина на паролата на десет герои от буквите от латинската азбука и числата - много опции. Ако изберете паролата за 1,000,000 опциите във второто, това ще отнеме няколко хиляди години. Но тъй като тази безсмислица е трудно да се помни, че често правят паролата на смислени думи. Преди няколко години беше установено, че по-голямата част на пароли можете да вземете с помощта на речник на 10000 думи. По това време на червея (вирус) се появи в мрежата, който се качи на UNIX сървъри, като използват своята дупка в защитата на гостите и бране на пароли priveligirovanyh потребители, използващи. Unix система правописен речник. Нищо не трябва да се влача наоколо!

Всеки потребител, а той не е влязъл правилно името и паролата си, се счита за злонамерен хакер. С това, което трябва да направите, когато потребителят нещо не е наред?

  • забравяне (тази на достойни места има formochka "забравена парола", за да изпрати на системните настройки, въведени през същия този имейл парола)
  • самодоволство ( "защото nefig")
  • парола познае речник (вероятността за успешен подбор е страхотно, толкова близо, че е необходимо, особено ако на мястото на търговски характер)
  • DoS-атаки (за да не се претовари сървъра, че е необходимо да се минимизира действия, които ще се изпълняват сценария в такъв случай)

Мислех си, как може да доведе до претоварване на сървъра, ако механизмът на защита стои на файлове. Оказа се, че е лесно (колко ще струва - е друг въпрос). Така, например, сървърът не може да оцелее, ако сценарият ще се опита до 1000 пъти в секунда, за да отворите файловете на устройството за запис и пишат на данните в тях. Защото след 5 провали вход опитва потребителят веднага отказан достъп (без каквато и запис на данни във файла), е необходимо да се намери на ПР 200 уникални, от които пет пъти и да се потърси. Това е възможно. Дръж bannerokrutilke HTML-банер с пет ключови думи:

Потребителят незабавно вземане на пет обаждания на сървъра пет пъти пише във файл (между другото, в някои браузъри може да се появи прозорец, който да въведете потребителско име и парола). Можете да направите HTML страници с пет такива изображения и самата страница вкарва през вградена рамка на посещаваното място (чрез вградена рамка - до поле заявката бъде не беше намерен едва ли khaljavnogo хостинг екип за поддръжка ще се занимава с такива неща, като рови в регистрационните файлове, с референти за търсене.) , Тези примери, които съм дал, разбира се, се разтягат, но фактът, че можете да се възползвате от този недостатък на системата е доказано. Между другото, нещо като това се е случвало преди.

И тук е кода на програмата:

// тук идва инсталацията поради сървъра на базата данни. да не докосвате нищо, ако потребителят веднага "траш".

Създаване на таблица unauth (потребителско име VARCHAR (64) NOT NULL, мине VARCHAR (64) NOT NULL, IP VARCHAR (255), logintime TIMESTAMP)

И вместо достъп до файловете, ние работим с базата данни.

Изтрий от unauth КЪДЕ logintime

Такъв механизъм е под тежък товар ще бъде по-бърз и по-надежден от файловете - на базата на често използвани данни се буферира и обработват директно в RAM.

Парола страница. Част 3: Паролата за базата данни

Метод за знак например MySQL. Напишете функция, например, mysql_die:

В началото на програмата показва, че хост сървъра на базата данни и, ако е необходимо, името на базата данни:

И за да се свържете със сървъра се вземат променливи: $ PHP_AUTH_USER и $ PHP_AUTH_PW.

И все пак. Сега недостатъците. Разбира се, с такава защита може да се опита да вдигне парола (по принцип е възможно да се приложи за заключване, но след това poteryatesya цялата красота на метода). Парола, както в случая на сървъра за защита средство е изпратен в ясен. Но това е съвсем наред за прости задачи.

Парола страница. Част 4. pechenyushki

Този метод се прилага, когато много, и войските им се променят непрекъснато, на първо място, потребителите. На второ място, когато това е необходимо да се направи лесно влизане - така че можете да влезете в системата чрез въвеждане на потребителско име и парола във формата на страницата.

Начертайте форма и да направи файла, който получава потребителско име и парола (защита на колекции, описах Oud, той добави тук себе си).

Всички затворени страници причинят файла, който проверява паролата е правилна, получена от бисквитка:

Имена бисквитки ще бъдат използвани на няколко места, така че по-добре да ги поставя на едно място (например, да обяви постоянно), така че да не са точни за няколко пъти.

Както можете да видите, паролата ще се проведе през канала и да лежи на файл с бисквитки в открита некриптиран. Това е много опасно. В отсъствието на собственика, можете да отидете на компютъра, погледнете във файла, където навигаторът продължава съществуването си, както и да си запишете паролата на лист хартия (и ако в локалната мрежа всички общи неща, както и подходът, не е необходимо, и да откраднат паролата си, можете да общувате с хост).

В това "екстри" са над. Надеждна защита не е направено. Никой нямаше да се изкачи в досието на бисквитки за хашиш и го изберете. Тя ще бъде по-лесно да се постави между потребителя и уеб-базиран обучени и да го използвате, за да намерите паролата. Можете да поставите на Троян, който ще се съхранява всичко, което потребителят е влязъл на клавиатурата, но това не е наш проблем. За да се предпазите от слушане на канала, е необходимо да се използват съединения като SSL или криптиране.

Парола страница. Част 5. Sessions

Когато работната сесия, необходимостта да не е толкова чести. Например, в играта си "монополист" Аз веднага започва да използва сесията, тъй като потребителят може да играе на няколко игри и съща страница в една и съща работа сесия може да съдържа различни данни. Налице е по-добре данните за една от игрите, които включват потребителя, съхранявани в сесия и направи страница, за да се придвижвате между игри.

Много сесии за механизма няма да кажа - вече е описано. В най-простата форма (или по-скоро в dafault-висок рейтинг), този механизъм работи по следния начин: системата притежава сесия на сървър, който съдържа файл с неговите променливи. Сесията на потребителя при стартиране получава уникален идентификатор (обикновено чрез бисквитка), а когато се отнася до други страници, го изпраща. Когато стартирате механизъм сесия в скрипта ви проверки манипулатор PHP, ако има съответен идентификатор, който дойде файл сесия - ако има такъв, сценарият може да чете данни от файл, ако не - ще стартира нова сесия и файлът е създаден. Разбира се, името на тази променлива в PHP Уверете се, че вашите растения.

Сега, за това, което се отличава ние използваме.

session_start (). Стартира се механизъм сесии. От потребителя да бъде променлива и съответните документи. Ако файлът не съществува, тя е създадена, а сесията е започнала от нулата. Ако няма файл или променлива, променливата се генерира (например, изпратен глава с kukoy) и създава файла.

session_register (NAME1, NAME2, imya3.). Посочете кои променливи, за да се помни във файла в края на сценария. След като потребителят скача на друга страница, можете да започнете механизъм сесия, и след извикването на тази функция на променливите са на разположение.

session_destroy (). Премахва файл с данни на сесия (с използване на бисквитки трябва да ги изтриете ръчно, излагайки на празен бисквитката "setcookie (session_name ())").

Така че, ние имаме три файлове - Вход (логин), проверете (удостоверяване) и изход (Изход).

Този скрипт е и процесор и форма за въвеждане на данни. Когато получите потребителско име и парола, той ги обработва и ако те са верни, спре да изпраща на потребителя към правилната страница. Ако данните са неверни или липсващи, начертайте формата.

На потребителя се проверява в ползвателя на масив $ - всичко е въпрос на данните, е възможно, например, да го поздрави по име:

Двойка коментари: Затворен парола част в този пример - целия сървър (например service.firm.ru), за да затворите трябва да се поправи пътя на директорията. Вместо PHPSESSID използва session_name (). така че можете да промените името на ID е на разположение. Между другото, на един физически сървър може да се направи с различни имена сесия ID - достатъчно, за да сложи дясната част на файла .htaccess с линия php_value session.name "Абракадабра".