[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Капча
killer8080
Twin
в вашем примере реализации капчи, в разделе "Всякие полезности", есть уязвимость. Из-за которой она может быть эффективной только против автономных ботов, в случае целенаправленной спам атаки, она практически бесполезна.
Ошибка заключается в способе проверки введённых данных
    if (isset($_POST['submit']))  
{
// Сравниваем то, что ввел пользователь с ключем в сессии
if (!empty($_SESSION['key']) && ($_SESSION['key'] == $_POST['txtCaptcha']))
{
// Тут можно, нет, даже нужно поместить код, который будет выполняться
// в случае правильного ввода капчи, например добавить пост в гостевую
// книгу

$status = 'Правильно!';
}
else
{
// Ну а тут, соответственно, что делается в случае ошибки
$status = 'Вы ошиблись :-(';
}
}

ничто не мешает последовательно отправлять post запросы с одними и теми же id сессии и строкой капчи. То есть спамеру достаточно один раз распознать картинку и скормить своему боту session_id и правильную строку.
Чтобы это исключить, нужно удалять $_SESSION['key'] например так

    if (isset($_POST['submit']))  
{
// Сравниваем то, что ввел пользователь с ключем в сессии
if (!empty($_SESSION['key']) && ($_SESSION['key'] == $_POST['txtCaptcha']))
{

...

}
else
{

...

}
if(isset($_SESSION['key'])) unset($_SESSION['key']);
}







Спустя 1 час, 28 минут, 2 секунды (6.04.2011 - 23:57) twin написал(а):
Спасибо, поправим smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.