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

Форум АНТИЧАТ (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 ты в принципе забил, равно как и на любителей старых или специфических браузеров)

Qwazar 16.04.2008 17:55

Цитата:

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

А что мешает выяснить как сервак возвращает этот хеш и научить робота заходить на страницу и снифать его от сервера, а потом дописывать в запрос при отправке?

З.Ы.
Прошу прощения, что разными сообщениями.

З.З.Ы.

Лучше вместо запроса яваскриптом ответа с сервера, как тут:
Код:

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

Просто тупо зашить ещё на сервере это поле в скрипт и пройтись обфускатором. Тогда если снифать трафф, ты не получишь хеш, а получишь только страницу целиком.

Ну и логичный вывод - Тогда, а при чём тут jQuery и аякс, если речь идёт о клиентской генерации элементов страницы яваскриптом :)))

hackconnect 16.04.2008 18:44

кстати генерация рандомных имен полей неэффективна имхо - что мешает боту скачать и отпарсить форму? Да и кодить под этот сабж тоже тот еще гемор.

Цитата:

а если нет ?
носкрипт и капча :) ибо этот метод неприменим тогда :)

Цитата:

Ну и логичный вывод - Тогда, а при чём тут jQuery и аякс, если речь идёт о клиентской генерации элементов страницы яваскриптом ))
ты не понял о чем речь.

Qwazar 16.04.2008 18:49

Цитата:

Сообщение от hackconnect
ты не понял о чем речь.

Да ладно, он предлагает генерить сервером на странице jQuery код, который будет генерить скрытое поле которое будет передавать на сервер хеш, который будет аяксовыми методами спрашиваться у сервера.

Фишка в том, что сначала клиенту отдаётся страница с яваскриптом, который этот запрос хеша и сгенерит, затем аяксом запрос "дай мне хеш" уйдёт на сервер, и вот после этого уже можно снифать ответ от сервера. Всё.

Если непонятно:

1) Серверу отдаётся страничка с яваскриптом (обработано обфускатором)
2) Яваскрипт на клиенте запрашивает у сервера хеш-код для скрытого поля
3) сервер возвращает хеш-код
4) при запросе, на сервер передаётся этот хеш код
5) они там сравниваются

А теперь прикинь, что между 2 и 3 я включил снифер.

hackconnect 16.04.2008 18:52

хм, значит я подумал что метод умнее ?)

лучше тогда сервер тупо пусть досылает картинку и инпут.

Isis 16.04.2008 19:10

Qwazar, пост #3

Qwazar 16.04.2008 19:11

Цитата:

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

Ну а что мешает спереть сессию? Если до отправки формы включили сниффер.

Т.е. когда тебе уже пришла страница, но когда на md5.php запрос ещё не ушёл.

Isis 16.04.2008 19:26

Хех..ну попробуй :)

Qwazar 16.04.2008 19:34

Цитата:

Сообщение от Isis
Хех..ну попробуй :)

А в чём проблема зафиксировать любой траффик между клиентом и сервером??? (Если ты и есть клиент :) )

hackconnect 16.04.2008 20:01

это уже такие дебри что ппц ->|
ага, убрал уже :D

лучше имхо то, что я предложил..

Qwazar 16.04.2008 20:03

Цитата:

Сообщение от hackconnect
это уже такие дебри что ппц ->|
ага, убрал уже :D

лучше имхо то, что я предложил..

Ну или если оч не хочется напрягать юзера, то куда надёжнее генерить хеш ещё до того как отдаёшь страницу юзеру, потом писать его в js ещё на сервере, пройтись обфускатором и отдать клиенту. Тогда и аякс не нужен и проблем с MIM не будет :)

GreenBear 16.04.2008 20:12

метод исиса для мазахистов и тех, кому наплевать на своих юзверей имхо. я вообще не переношу сайты где обязательный скрипты.. как дополнение - хорошо, пусть юзает кому нравится.. но и без скриптов сайт обязан быть ничем не хуже для пользователя.
Цитата:

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

lll6 16.04.2008 20:14

Картинки с животными/предметами рулят. Выбери кошку, собаку, велосипед и т.д. Боты отдыхают)

Isis 17.04.2008 02:08

Рулит вот что:
Перетащи треугольник в треугольную форму и пиши камент =\

astrologer 17.04.2008 20:51

По-моему, только лишний запрос к серверу.
Ajax вообще не для этого нужен, а здесь он, фактически, только дань моде. Если бот способен разобрать JS - то такой метод не спасёт, если не способен - то и Ajax ни к чему.

Сам я не сторонник использования библиотек, если оно нерационально - мне сложно понять, зачем навешивать на страницу jQuery ~80кб, а потом писать вот так:
Код:

function ssha1_dec(sha1_decode)
{
    $.post("tools.php", { sha1_de: document.getElementById("sha1_de").value },
  function(data)
  {
        document.getElementById("sha1de_ext").innerHTML = data;
  });
}

function who_is(whois)
{
    $.post("tools.php", { whois: document.getElementById("whois").value },
  function(data)
  {
        document.getElementById("whois_ext").innerHTML = data;
  });
}

function reverse_ip(reverse)
{
    $.post("tools.php", { reverse: document.getElementById("reverse").value },
  function(data)
  {
        document.getElementById("reverse_ext").innerHTML = data;
  });
}


k1b0rg 17.04.2008 21:24

Способ отнюдь гавно.
1) Как уже говорилось, не будет пахать у людей с отключенным JS или старыми браузерами.
2) echo md5($_SERVER['REMOTE_ADDR']).'xekxek'); при таком раскладе на каждый ип будет всегда один и тотже хеш, узнать его труда не составит, а затем твой способ улетает в сортир.

кстати
Цитата:

md5($_SERVER['REMOTE_ADDR']).'xekxek');
в каком месте тут лишняя скобка?


Цитата:

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

Цитата:

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

Цитата:

$_SERVER['REMOTE_ADDR'].time();
Вот это вообще непонятно. Какой смысл делать такую конструкцию без сессии? А если ее делать с сессией, и делать замер времени между выдачей формы и ее отправкой, тогда этот код неуместен.

Noiro 17.04.2008 21:40

Как дополнительная проверка к капче, JS с обфускацией довольно неплохая идея. Но для этого AJAX не нужен (нормальному боту пофигу как запрашивать страницы, он с одинаковой эффективностью и AJAX симитирует, и обычный запрос).
Как самостоятельная проверка - очевидно что такой способ проигрывает капче в эффективности.
Как не прячь JS, он всеравно остается исполняемым кодом, который можно загнать в JS интерпретатор и обойти все обфускации и крипты (ибо браузер тоже должен как-то его обработать).
Где взять интерпретатор ? Mozilla Firefox - опенсорсовый проект, и там например есть постоянно обновляемый интерпретатор JS.

NOmeR1 17.04.2008 21:59

Новые способы - это всегда интересно, однако капча остаётся самым простым и самым защищённым способом.

hackconnect 17.04.2008 22:28

а если есть жс, дополнить ее тем что я сказал выше - тоже поможет.

DWORD 18.04.2008 16:17

Это антиспам, но не антифлуд. Антиспам реализуется довольно просто в любом случае, потому что спам-боты сейчас весьма неинтеллектуальны - им интеллектуальность скорее вредна чем полезна. Но против целенаправленного флуда вашей формы такие способы не никак спасут =(

sboy20042 18.04.2008 17:04

Isis если бы почтовики юзали такой способ, то в ящиках у людей по тыще в день спама было бы и я был бы вторым биллом гейтсом

sboy20042 18.04.2008 17:04

2 Dword
много не знаешь просто

NOmeR1 18.04.2008 17:09

Цитата:

Сообщение от sboy20042
2 Dword
много не знаешь просто

Поверь, он на много больше тебя знает.

sboy20042 18.04.2008 17:23

NOmeR1
его реплика про ботов говорит об незнании именно этих вопросов))
а то что он знает там в тысячи раз больше меня не колышит

DWORD 18.04.2008 17:32

Цитата:

Сообщение от sboy20042
Isis если бы почтовики юзали такой способ, то в ящиках у людей по тыще в день спама было бы и я был бы вторым биллом гейтсом

Какая связь между спамом почтовых ящиков и темой статьи, где речь идет о спаме форм?
Цитата:

Сообщение от sboy20042
2 Dword
много не знаешь просто

Это для меня не откровение, какое однако имеет отношение к разговору?
Цитата:

=sboy20042NOmeR1
его реплика про ботов говорит об незнании именно этих вопросов))
а то что он знает там в тысячи раз больше меня не колышит
Спамом естественно я не занимаюсь - оставим это моральным уродам - дело с ним, однако, имею видимо благодаря таким умельцам как sboy20042.
Цитата:

Сообщение от NOmeR1
Поверь, он на много больше тебя знает.

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

sboy20042 18.04.2008 17:35

Dword привиди пример того что я нахальный и всем гадости пишу
Я тебе гадости не написал, я просто сказал что ты не знаешь если говоришь что спам боты неинтеллектуальны

А насчет спама, мне это не нравится, просто в этом есть деньги)

прошу принять админов во внимание тот факт что меня оскорбили назвав моральным уродом

DWORD 18.04.2008 18:06

Прямых оскорблений не было а во внимание меня уже и без ваших советов принимали слишком часто. Что касается моей осведомленности об интеллектуальности спам ботов, возможно у нас разные единицы измерения их способностей и то что для вас выглядит очень замысловатым, мне таким не представляется?

sboy20042 18.04.2008 23:07

Dword по твоему распределенное распознавание неэлементарной капчи основанное на нейронных сетях это неинтеллектуально? Учитывая то что само название "нейронная сеть" подрузамевает самообучаемость

DWORD 19.04.2008 00:21

Цитата:

Сообщение от sboy20042
Dword по твоему распределенное распознавание неэлементарной капчи основанное на нейронных сетях это неинтеллектуально? Учитывая то что само название "нейронная сеть" подрузамевает самообучаемость

Есть некоторые боты которые работают с алгоритмами распознавания "капчи" (не важно по какому принципу они работают - на нейронных сетях не видел), только вот умности ботам это не добавляет, потому что чуть "капча" другая или другая форма они уже не понимают что надо делать и сдаются в лучшем случае, а то и шлют мусорные запросы.

Вот к чему этот разговор, скажите? Вы говорите что занимаетесь спамом (и мне не кажется что это маловероятно, или необычно), а говорите здесь какую-то нелогичную хренотень, зачем - как вообще это понимать? Странно как-то это и нелепо...

sboy20042 19.04.2008 00:56

Цитата:

Сообщение от dword
Есть некоторые боты которые работают с алгоритмами распознавания "капчи" (не важно по какому принципу они работают - на нейронных сетях не видел), только вот умности ботам это не добавляет, потому что чуть "капча" другая или другая форма они уже не понимают что надо делать и сдаются в лучшем случае, а то и шлют мусорные запросы.

еще раз повторюсь, "нейронная сеть" и "самообучаемость"
улавливаешь?

DWORD 19.04.2008 00:58

Цитата:

Сообщение от sboy20042
еще раз повторюсь, "нейронная сеть" и "самообучаемость"
улавливаешь?

Мммм.... Да, я как-то сразу не понял: "нейронная сеть" и "самообучаемость" это наводит на определенные мысли согласен...


Время: 14:55