n3m0
20.01.2008, 22:19
Для защиты Веб-сайтов в пике своей славы находится технология КАПТЧИ - это тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером. Основная идея теста: предложить пользователю такую задачу, которую легко решает человек, но которую невозможно (или крайне трудно) научить решать компьютер. (с) Wikipedia
В наиболее распространённом варианте CAPTCHA: от пользователя требуется ввести символы, как правило,изображённые на предлагаемом ему рисунке в искажённом виде, иногда с добавлением шума или полупрозрачности.
http://n3m0.wordpress.com/files/2008/01/captcha.jpg
Не так уж давно появился вариант КАПТЧИ -> ReCaptcha.
http://n3m0.wordpress.com/files/2008/01/captchanew.gif
Новый вариант использует два слова для ввода с возможностью прослушивания вводимого текста по-буквенно.
А самое главное, новая каптча использует как бы авторизацию на сервере сервиса.
Небольшой пример использования
1. Первое что вам нужно - зарегистрироватся (https://admin.recaptcha.net/accounts/signup/) в сервисе
2. Вам нужно будет ввести домен вашего сайта, чтобы получить ReCaptcha key
http://n3m0.wordpress.com/files/2008/01/captchahomepage.thumbnail.gif (http://n3m0.wordpress.com/files/2008/01/captchahomepage.gif)
Вместо mysite.ru введите свой домен.
3. Получить Ключ
http://n3m0.wordpress.com/files/2008/01/captchanewvbvb.thumbnail.gif (http://n3m0.wordpress.com/files/2008/01/captchanewvbvb.gif)
И такс, вы получили Public и Private keys. Обязательно их сохраните.
4. Внедрить в скрипт
Обычно каптчу внедряют в станицу, где нужно заполнять форму(для того, чтобы веб-форма была защищена от флуд-ботов, спамеров).
Итак, допустим у вас есть скрипт, который производит авторизацию на сайте.
Внедряется очень просто
<?php
if(isset($_POST['sub'])) // Обработка формы
{
require_once('recaptchalib.php'); // запускаем библиотеку reCaptcha
$privatekey = "6Ld6-QAAAAfgHxgVIJcwS45EIwEA4dP9KBE65m"; // Private Key
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) { // Проверка на правильность ввода
die ("Введён неправельный код. Вернитесь назад и попробуйте ещё раз." .
"(reCAPTCHA said: " . $resp->error . ") <br><a href=\"#\" onclick=\"history.back()\">Назад</a>");
$name = addslashes($_POST['name']); // Обработка поля name
$password = addslashes($_POST['password']); // Обработка поля password
$password = md5($password); // Обработка поля password
$query = mysql_query("SELECT * FROM users WHERE name = '$name' AND pass = '$password' LIMIT 1"); // Примерный запрос
/////////////// И тут ваши действия
///////////
//.................................
//..................................
}
else
{
// Вывод формы
echo '
<form method="post" action="">
<label class="description" for="name"><font color="#CCCCCC">Имя </font></label>
<input id="element_2" style="background-color:#DAE3E7" name="name" class="element text medium" type="text" maxlength="25" value=""/>
<label class="description" for="password"><font color="#CCCCCC">Пароль </font></label>
<input id="element_3" style="background-color:#DAE3E7" name="password" class="element text medium" type="text" maxlength="30" value=""/>';
/////// Начало вывода КАПТЧИ
require_once('recaptchalib.php');
$publickey = "6Ld6-QAAAAAdsffy_FLxiX8YTpxd45CEgqZwV3BN"; // Public Key
echo recaptcha_get_html($publickey);
/////// Конец вывода КАПТЧИ
echo '<input type="hidden" name="sub" value="1" /><br />
<input id="saveForm" class="button_text" type="submit" name="submit" value="Вход" /><br />';
// Конец вывода формы
?>
Самую последнюю версию библиотеки reCaptcha можно скачать здесь -> http://code.google.com/p/recaptcha/downloads/list
Это не статья, а очень маленьки обзор. не судите строго
Спасибо за внимание. (с) n3m0
В наиболее распространённом варианте CAPTCHA: от пользователя требуется ввести символы, как правило,изображённые на предлагаемом ему рисунке в искажённом виде, иногда с добавлением шума или полупрозрачности.
http://n3m0.wordpress.com/files/2008/01/captcha.jpg
Не так уж давно появился вариант КАПТЧИ -> ReCaptcha.
http://n3m0.wordpress.com/files/2008/01/captchanew.gif
Новый вариант использует два слова для ввода с возможностью прослушивания вводимого текста по-буквенно.
А самое главное, новая каптча использует как бы авторизацию на сервере сервиса.
Небольшой пример использования
1. Первое что вам нужно - зарегистрироватся (https://admin.recaptcha.net/accounts/signup/) в сервисе
2. Вам нужно будет ввести домен вашего сайта, чтобы получить ReCaptcha key
http://n3m0.wordpress.com/files/2008/01/captchahomepage.thumbnail.gif (http://n3m0.wordpress.com/files/2008/01/captchahomepage.gif)
Вместо mysite.ru введите свой домен.
3. Получить Ключ
http://n3m0.wordpress.com/files/2008/01/captchanewvbvb.thumbnail.gif (http://n3m0.wordpress.com/files/2008/01/captchanewvbvb.gif)
И такс, вы получили Public и Private keys. Обязательно их сохраните.
4. Внедрить в скрипт
Обычно каптчу внедряют в станицу, где нужно заполнять форму(для того, чтобы веб-форма была защищена от флуд-ботов, спамеров).
Итак, допустим у вас есть скрипт, который производит авторизацию на сайте.
Внедряется очень просто
<?php
if(isset($_POST['sub'])) // Обработка формы
{
require_once('recaptchalib.php'); // запускаем библиотеку reCaptcha
$privatekey = "6Ld6-QAAAAfgHxgVIJcwS45EIwEA4dP9KBE65m"; // Private Key
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) { // Проверка на правильность ввода
die ("Введён неправельный код. Вернитесь назад и попробуйте ещё раз." .
"(reCAPTCHA said: " . $resp->error . ") <br><a href=\"#\" onclick=\"history.back()\">Назад</a>");
$name = addslashes($_POST['name']); // Обработка поля name
$password = addslashes($_POST['password']); // Обработка поля password
$password = md5($password); // Обработка поля password
$query = mysql_query("SELECT * FROM users WHERE name = '$name' AND pass = '$password' LIMIT 1"); // Примерный запрос
/////////////// И тут ваши действия
///////////
//.................................
//..................................
}
else
{
// Вывод формы
echo '
<form method="post" action="">
<label class="description" for="name"><font color="#CCCCCC">Имя </font></label>
<input id="element_2" style="background-color:#DAE3E7" name="name" class="element text medium" type="text" maxlength="25" value=""/>
<label class="description" for="password"><font color="#CCCCCC">Пароль </font></label>
<input id="element_3" style="background-color:#DAE3E7" name="password" class="element text medium" type="text" maxlength="30" value=""/>';
/////// Начало вывода КАПТЧИ
require_once('recaptchalib.php');
$publickey = "6Ld6-QAAAAAdsffy_FLxiX8YTpxd45CEgqZwV3BN"; // Public Key
echo recaptcha_get_html($publickey);
/////// Конец вывода КАПТЧИ
echo '<input type="hidden" name="sub" value="1" /><br />
<input id="saveForm" class="button_text" type="submit" name="submit" value="Вход" /><br />';
// Конец вывода формы
?>
Самую последнюю версию библиотеки reCaptcha можно скачать здесь -> http://code.google.com/p/recaptcha/downloads/list
Это не статья, а очень маленьки обзор. не судите строго
Спасибо за внимание. (с) n3m0