Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Забудем про captcha (https://forum.antichat.xyz/showthread.php?t=67441)

Isis 16.04.2008 04:31

Забудем про captcha
 
[Intro]

С недавнего времени я начал изучать AJAX библиотеку jQuery..
На мой взгляд это лучшая, удобная и легкая либа для AJAX...
Прочитав некоторые статьи, доки по либе я решил сделать так, чтобы пользователям на вашем сайте не пришлось смотреть на закорюченные символы :)
[Start]

Имеем форму:
PHP код:

<form method="post" id="xek">
Text: <input type="text" name="text" /><br/>
<
input type="submit" name="sub" value="Ok" />
</
form

Ну тут роботу ничего не стоит как отправлять POST запросы text=ss,sub=Ok на наш скрипт...

А если добавить через js некую форму.....
В хидере( Между <head> и </head>) страницы напишем следующее:

Код:

<script src="jquery-1.2.3.pack.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
    $.get("md5.php",function(hash)
    {
        $("#xek").append('<input type="hidden" name="code" value="'+hash+'" />');
    });
});

В этом коде мы делаем GET запрос (сразу при загрузке страницы с формой) к файлу md5.php, получаем оттуда данные и jQuery сам вставляет новый инпат в нашу форму на странице, но исходный код страницы при этом не изменяется..

в md5.php мы можем выводить допустим такое:
PHP код:

<?php
echo md5($_SERVER['REMOTE_ADDR']).'xekxek');
?>

Тем самым если робот будет отправять пост запросы через обычную форму, то скрипт его не пропустит, потому что проверить робот это или нет можно след.кодом:
PHP код:

<?php
if(!isset($_POST['hash']) || $_POST['hash'] != md5($_SERVER['REMOTE_ADDR']).'xekxek')) echo 'You are not human';
?>

[End]
Вы скажите, а что сложного человеку посмотреть JS код, узнать файл md5.php и ботом сначала парсить инфу оттуда?

Ну так существует ведь http://ru.wikipedia.org/wiki/Обфускация JS кода с помощью которой вам надо обфуцировать небольшой JS код в хидере..

Спросите вы: А разве сложно его раскодировать?
Отвечаю также: А разве сложно его хорошо криптануть??)))

Isis 16.04.2008 04:43

Либо еще лучше подключить мод реврайт и отправлять запросы на что-то типа
PHP код:

<?php
$_SERVER
['REMOTE_ADDR'].time();
?>

/IP_time.jpg

Так уже даже можно название файла не прятать т.к. пока робот зайдет на файл и отправит форму, то значения time() будут разные

Isis 16.04.2008 04:46

Либо вообще в md5.php создавать сессию с указанным выше содержимым и если форма отправляется без сессии, то робот! :)

GreenBear 16.04.2008 09:03

ты забыл про безскриптовых людей.. к тому же гораздно проще давать рандомные имена полям формы еще перед генерацией странице, я кстати писал об этом ..

Isis 16.04.2008 14:50

GreenBear, да, тоже вариант, а безскриптовые люди сделать ничего не смогут если допустим сделать еще проверку по IP :)

Sn@k3 16.04.2008 15:04

неее буду лечше на ранмоде(типа капча) сидеть,по мне эфективнее. и некие мои замороченные проверочки.

GreenBear 16.04.2008 15:30

исис, в том то и дело что они НИЧЕГО сделать не смогут ....

Isis 16.04.2008 15:49

GreenBear, с чего ты взял?
Если у них включен javascript, то jquery сделает свое дело...

GreenBear 16.04.2008 17:00

)))))))
а если нет ?

Qwazar 16.04.2008 17:48

Цитата:

Сообщение от GreenBear
исис, в том то и дело что они НИЧЕГО сделать не смогут ....

Сам факт того что ты юзаешь jQuery, или любую аяксовую либу, говорит о том, что твой сайт заточен под людей с включеным js. (А на людей с выключеным js ты в принципе забил, равно как и на любителей старых или специфических браузеров)


Время: 21:16