@session_start();
# Кол-во символов в строке
$symbols_num = 4;
# Цифры
$numbers = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
# Генерация массива символов контрольной строки
for($i = 0; $i < $symbols_num; $i++)
{
$captcha_key_array[] = $numbers[rand(0, 9)];
}
$captcha_key = implode('', $captcha_key_array);
$_SESSION['captcha'] = $captcha_key;
# Берём щрифты
$fonts_dir = opendir('fonts');
while(false !== ($module = readdir($fonts_dir)))
{ if($module != '.' and $module != '..')
{
$fonts_array[] = $module;
}
}
$fonts_num = count($fonts_array);
# Ширина-высота изображения
$width = $symbols_num * 30;
$height = 50;
# Создание изображения
$image = imagecreatetruecolor($width, $height);
....................... далее создаются всякие шумы, вводится строка и выводится изображение.
Сломали капчу, помогите советом
У меня проблема следующая, мою капчу сломали, начали слать спам. Пробовал подставлять другие шрифты - бесполезно. Затем ради эксперимента убрал строку с капчи вообще, и все равно продолжался спам. В общем получается что злоумышленник как то считывает строку, которую я записываю в сессию.
Если кто сталкивался, подскажите как с этим бороться.
Заранее спасибо!
Как вы капчу организовали? Есть пример посмотреть?
Код:
$numbers = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
# Генерация массива символов контрольной строки
for($i = 0; $i < $symbols_num; $i++)
{
$captcha_key_array[] = $numbers[rand(0, 9)];
}
$captcha_key = implode('', $captcha_key_array);
# Генерация массива символов контрольной строки
for($i = 0; $i < $symbols_num; $i++)
{
$captcha_key_array[] = $numbers[rand(0, 9)];
}
$captcha_key = implode('', $captcha_key_array);
Код:
$captcha_key='';
for($i = 0; $i < $symbols_num; $i++)
$captcha_key.=rand(0,9);
for($i = 0; $i < $symbols_num; $i++)
$captcha_key.=rand(0,9);
А вот моё решение для капчи:
Код:
class capcha
{
static function InitCapcha($num=5)
{
$capcha='';
$letters="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for ($p=0;$p<$num;$p++)
$capcha.=$letters[mt_rand(0,strlen($letters)-1)];
$_SESSION['capcha']=$capcha;
}
}
{
static function InitCapcha($num=5)
{
$capcha='';
$letters="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for ($p=0;$p<$num;$p++)
$capcha.=$letters[mt_rand(0,strlen($letters)-1)];
$_SESSION['capcha']=$capcha;
}
}
вызывается через capcha::InitCapcha(4), сессия должна быть инициализирована заранее.
А рисует её отдельный файл gen.php, который достаёт $_SESSION['capcha'] и возвращает картинку
Спасибо за ответ int. Но как бы я не химичил, все равно воруют (или как то подменяют) $_SESSION['capcha'], только как, не пойму
Вместо своей жуткой поделки ставьте вот это
Цитата: RussianSpy
Вместо своей жуткой поделки ставьте вот это
http://www.captcha.ru/kcaptcha/
http://www.captcha.ru/kcaptcha/
Принцип тот же. Заводится сессия, и у меня ее воруют
Похитить содержимое сессии невозможно без прямого взлома веб-сервера.
ЗЫ И кстати - можете показать свою капчу в действии на проблемном сайте?
Цитата:
Поставьте эту капчу что я вам дал ссылку и посмотрите результат.
поставил, результат аналогичный :(
Цитата:
Бесплатные почтовые сервисы, такие
как Hotmail и Yahoo, зачастую используются спамерами для своих
рассылок. Но из-за громадного числа рассылаемых писем и из-за того,
что подобные ящики довольно быстро уничтожаются, спамерам необходимо
регистрировать их тысячами.<BR>Для этих целей они используют
специальных роботов, предназначенных для автоматической регистрации.
Чтобы бороться с этими роботами, компании, предоставляющие почтовые
услуги в Интернете, ввели так называемый тест "Captcha". Его суть в
том, что при вводе регистрационных данных, нужно для подтверждения
своей человеческой природы ещё и расшифровать определенного вида
картинку. Обычно это плохо читающийся текст на каком-нибудь неровном
фоне.<BR>Человеку эта задачка дается легко, в то время, как роботы с
ней не справляются. И вот, чтобы обойти данную проблему, спамеры
завели бесплатный порнографический ресурс.<BR>Для получения доступа
к этому ресурсу необходимо тоже (!) пройти тест "Captcha". Тысячи
посетителей порноресурса ежедневно проходят этот тест, не
подозревая, что при этом они создают очередной почтовый ящик для
спамеров.<BR>При помощи специального скрипта регистрационный тест
Hotmail переносится на спамерский сайт, где он успешно и
проходится...
как Hotmail и Yahoo, зачастую используются спамерами для своих
рассылок. Но из-за громадного числа рассылаемых писем и из-за того,
что подобные ящики довольно быстро уничтожаются, спамерам необходимо
регистрировать их тысячами.<BR>Для этих целей они используют
специальных роботов, предназначенных для автоматической регистрации.
Чтобы бороться с этими роботами, компании, предоставляющие почтовые
услуги в Интернете, ввели так называемый тест "Captcha". Его суть в
том, что при вводе регистрационных данных, нужно для подтверждения
своей человеческой природы ещё и расшифровать определенного вида
картинку. Обычно это плохо читающийся текст на каком-нибудь неровном
фоне.<BR>Человеку эта задачка дается легко, в то время, как роботы с
ней не справляются. И вот, чтобы обойти данную проблему, спамеры
завели бесплатный порнографический ресурс.<BR>Для получения доступа
к этому ресурсу необходимо тоже (!) пройти тест "Captcha". Тысячи
посетителей порноресурса ежедневно проходят этот тест, не
подозревая, что при этом они создают очередной почтовый ящик для
спамеров.<BR>При помощи специального скрипта регистрационный тест
Hotmail переносится на спамерский сайт, где он успешно и
проходится...
Возможно это именно тактой случай.
не думаю, я ведь в качестве эксперимента выводил пустую картинку без строки, результат тот же
Цитата: sergik15828
не думаю, я ведь в качестве эксперимента выводил пустую картинку без строки, результат тот же
А может не капчу ломают а sql инъекция? ) или ошибка в скриптах?
Цитата:
А может не капчу ломают а sql инъекция?
sql тут не причем, я не использую в майл форме запросов к базе
Цитата: sergik15828
поставил, результат аналогичный :(
Ну прямо чудеса какие. А в чудеса лично я не верю. А верю в то, что где-то есть дыра и ей пользуются.
В конце концов на ящик спам может тупо литься в обход капчи обычными методами. Где-то засветил ящик (может почтовый сервер ломанули и слили базу адресов), или имя ящика такое, что легко вычисляется (ради опыта когда-то создавал ящик совпадающий с именем домена и ни где его не светил, но спам на него литься начал).
Меняй короче ящик.
спам конкретно из этой формы, проверено
Все равно у тебя где-то в движке есть дыра. Вот её и ищи.