Посмотрите опытным взглядом на наличие дырок. Коллективный разум свернет горы.
Файл start.php. С него начинается просмотр.
1. Advinno - 14 Мая, 2011 - 11:24:15 - перейти к сообщению
Файл bezopasnost'.php. Он включается во все защищаемые страницы.
Файл login.php. Собственно, авторизация.
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?
- # Удаляем из таблицы "Неудачные попытки авторизации" записи, которые создались в предыдущий день.
- $query = "SELECT * FROM `bad_popitki`";
- {
- {
- $query2 = "DELETE FROM `bad_popitki` WHERE `Id` = '".$row['Id']."'";
- }
- }
- {
- # Защита от брутфорса. Проверяем не исчерпан ли лимит на кол-во попыток ввода пароля.
- $query3 = "SELECT * FROM `bad_popitki` WHERE `IP_of_User` = '".$_SERVER['REMOTE_ADDR']."'";
- {
- if ($row3['Kolvo_popitok'] >= 5)
- {
- exit;
- }
- }
- # Обрезаем Логин и Пароль и берем хэш от пароля
- # Т.к. от пароля остался только его хэш, то там нет неприятных символов. Проверяем только Логин.
- # Если встретился хоть один символ кроме 0-9, a-z, A-Z, то увеличиваем на единицу кол-во неудачных попыток.
- {
- {
- Plus_one_bad_popitka();
- exit;
- }
- }
- # Если дошли сюда, значит пара Логин-Пароль не содержин неприятных символов. Проверяем ее по таблице "Логин-Пароль"
- $query8 = "SELECT * FROM `My_Users` WHERE `Name_of_User` = '".$Name."' AND `Pass_of_User` = '".$Pass."'";
- {
- # Авторизуем юзера
- $_SESSION['Session_Name_of_User'] = $row8['Name_of_User'];
- $_SESSION['Session_IP_of_User'] = $_SERVER['REMOTE_ADDR'];
- # Обнуляем неудачные попытки входа для этого IP
- $query9 = "DELETE FROM `bad_popitki` WHERE `IP_of_User` = '".$_SERVER['REMOTE_ADDR']."'";
- exit;
- }
- else
- {
- Plus_one_bad_popitka();
- exit;
- }
- }
- else
- {
- # Если не нажата кнопка входа в форме, то выводим саму форму
- $query10 = "SELECT * FROM `bad_popitki` WHERE `User_IP` = '".$_SERVER['REMOTE_ADDR']."'";
- {
- if ($row10['Kolvo_popitok'] >= 5)
- {
- $Stroka_dlya_formi = "<div class='alert_red'>Попробуй после полуночи</div>";
- }
- if ($row10['Kolvo_popitok'] == 4)
- {
- $Stroka_dlya_formi = "<div class='alert_red'>Осталась 1 попытка</div>";
- }
- if ($row10['Kolvo_popitok'] == 3)
- {
- $Stroka_dlya_formi = "<div class='alert_red'>Осталось 2 попытки</div>";
- }
- if ($row10['Kolvo_popitok'] == 2)
- {
- $Stroka_dlya_formi = "<div class='alert_green'>Осталось 3 попытки</div>";
- }
- if ($row10['Kolvo_popitok'] == 1)
- {
- $Stroka_dlya_formi = "<div class='alert_green'>Осталось 4 попытки</div>";
- }
- }
- else
- {
- $Stroka_dlya_formi = "<div class='alert_green'>Осталось 5 попыток</div>";
- }
- require "forma-for-login.php";
- }
- function Plus_one_bad_popitka()
- {
- $query4 = "SELECT * FROM `bad_popitki` WHERE `User_IP` = '".$_SERVER['REMOTE_ADDR']."'";
- { # Если нашли IP, то обновляем время последней попытки
- $query5 = "UPDATE `bad_popitki` SET `Time_of_last_attempt` = '".time()."' WHERE `User_IP` = '".$row4['User_IP']."'" ;
- # и увеличиваем на 1 кл-во неудачных попыток
- $query6 = "UPDATE `bad_popitki` SET `Kolvo_popitok` = '".($row4['Kolvo_popitok']+1)."' WHERE `User_IP` = '".$row4['User_IP']."'";
- }
- else
- {
- # Если не нашли IP, то создаем новую запись
- $query7 = "INSERT INTO `bad_popitki` (`User_IP`, `Time_of_last_attempt`, `Kolvo_popitok`) VALUES ('".$_SERVER['REMOTE_ADDR']."','".time()."','1')";
- }
- }
- ?>