Ку всем и так,все наверное знают что есть разные способы получить пароль жертвы, соответственно и разные способы для этого, самый простой и распространенный это брут (перебор паролей).. сейчас напишем небольшую защиту от подобных атак..
Везде есть форма входа типа логин и пароль, после введения данных из формы они отправляются на файл обработки пусть это будет vhod.php и везде есть стандартная проверка
Если значение логина и пароля находятся в одной колонке и они равны введенным из формы то создаем сессию или куки для етого юзера (авторизируем его)
например..
if (isset($_REQUEST[\'us\']) && isset($_REQUEST[\'ps\']))
{
$user = mysql_real_escape_string($_REQUEST[\'us\']);
$password = mysql_real_escape_string($_REQUEST[\'ps\']);
$proverka = mysql_query(\"SELECT id FROM users WHERE nick = \'$us\' AND pass = \'$ps\' LIMIT 1\"
}
//если проверка правдивая, то ок
if (mysql_num_rows($proverka) == true)
{
$user = mysql_fetch_assoc($sqlAut);
//ставим сесси,куки т.д,создаем авторизацию
}
else
{
echo \'Неверные данные\';
}
На данном этапе нас интересует именно else, тоесть когда данные ложны..
Идея состоит в том чтобы дать юзеру всего лишь 5 попыток для свободного ввода логина и пароля,а далее выдавать еще раз формы авторизации с проверочным кодом.. вернемся к else - ошибочному варианту,
для начала создадим еще одну ячейку в табле юзера.. выполним запрос
ALTER TABLE таблица юзера ADD COLUMN vhod INT(11) default 0
//создастся ячейка vhod со значением 0
Идем больше..
При каждой неверной попытке входа,мы должны обновлять ячейку vhod, предварительно считывая ее нынешнее значение в зависимости от введенного логина..
$usi = mysql_query(\"SELECT vhod FROM `users` WHERE `nick` = \'$_REQUEST[us]\' \"
while ($openus=mysql_fetch_array($usi))
{
$vhod = $openus[\'vhod\'] + 1; //даем значение переменной, это вытащенная инфа из ячейки vhod у введенного юзера, к ней плюсуется единичка,каждый раз,когда юзер неправильно вводит данные
но уже с проверончым кодом..
{
$chislo=rand(1000,9999); //случайное число
setcookie(\"antibot\", $chislo, time()+60*60*24*30); //ставим это число в куки
echo \'Исчерпан лимит на попытку входа!\';
echo \'<form method=\"POST\" action=\"antibot.php\">
<input type=\"text\" name=\"us\" size=\"11\" value=\" Логин\"/>
<input type=\"text\" name=\"ps\" size=\"6\" value=\" Пароль \"/></br>
Анти-бот \'.$chislo.\' </br> <input name=\"anti\" type=\"text\"><br>
<input type=\"submit\" name=\"antibot\" value=\"Войти\"/>\';
exit(); // запрещаем выполнение дальнейшего выполнения кода
}
mysql_query(\"UPDATEе `users` SET `vhod` = \'$vhod\' WHERE `nick` = \'$_REQUEST[us]\' LIMIT 1\" //это обновление ячейки , если ее значение еще не достигло 5 - попыток входа
//чистим куки,сессии
echo \'Неправильный Логин или Пароль!\';
die();
Отправляем на проверку в antibot.php предварительно создав этот файл
<?php
require \'путь к файлу подключки бд\';
if (isset($_REQUEST[\'us\']) && isset($_REQUEST[\'ps\']) && isset($_REQUEST[\'antibot\']))
{
$user = mysql_real_escape_string($_REQUEST[\'us\']);
$ps = mysql_real_escape_string($_REQUEST[\'ps\']);
$sqlAut = mysql_query(\"SELECT id FROM users WHERE nick latuser = \'$us\' AND pass = \'$ps\' LIMIT 1\"
}
if (mysql_num_rows($sqlAut) != false)
{
setcookie(\"antibot\", $chislo, time()+60*60*24*30);
if ($_COOKIE[\'antibot\'] != $_POST[\'anti\'])
{
echo \'Не верный проверочный код!\';
exit();
}
echo \'OK! Данные подтверждены! Вы не бот\';
mysql_query(\"UPDATE `users` SET `vhod` = \'0\' WHERE `nick` = \'$_REQUEST[us]\' LIMIT 1\" //обнуляем ячейку
}
else
{
echo \'Данные не подтверждены!\';
}
}
?>
В общем думаю кодері расберутся..
nazar, омг,открой глаза! 70% из 100 - флудотемы и темы,где люди не знают элементарного,где к-во постов флудообщения от 50 до 400,при этом раздел вм,дизайна и кодинга пустой либо состоит из тем в максимум 20 - 30 постов. А теперь глянь первый пост и оцени своё Предуприждение.
да мне похрен.Ты правила нарушил,что то не так в лс.
Что,так крепко укоренился на должности,что тебе всё похер? А в лс ты мне 100 лет \"нужен\"..