Какво пречи на хората да използват CAPTCHA на някой друг като свой?

Защо (освен морални причини) повече хора не използват CAPTCHA на други сайтове като свои, докато продават решаването на споменатите CAPTCHA?

За мен такава система изглежда лесна за изпълнение:

  • настройте скрипт, който прави нещо на друг уебсайт, което изисква завършване на CAPTCHA чрез използване на прокси услуга
  • когато потребител на вашия сайт изпълни задача, която изисква попълване на CAPTCHA, просто му подайте CAPTCHA, която другият сайт ви моли да разрешите
  • когато потребителят разреши CAPTCHA, вашият скрипт може да извърши желаното действие на другия сайт, който е източникът на CAPTCHA, и потребителят на вашия сайт също се проверява чрез този процес

Това обичайно ли е? Ако не, защо не? Какво, ако изобщо може да се направи, за да се предотврати това?


person Eva    schedule 08.07.2013    source източник
comment
Не знам, но ако сте законен потребител на captcha, тогава да направите това е като да се простреляте в крака.   -  person Rafael    schedule 08.07.2013


Отговори (1)


Извличане на captcha. Ако приемем, че човек може лесно да извлече точното изображение на captcha от чуждия хост. За да направите това, трябва да преминете проверката за реферали (повечето браузъри (навигирани от хора) позволяват изпращането на http_referer). Вие също ще трябва да запазите session_id и secret от hidden input. Проверка на резултата. Чуждият хост трябва да свърже запазените променливи с тези, свързани със сесията на първата ви заявка, което изисква да приложите трудни cURL методи. Ще трябва да обработвате множество паралелни заявки, всички от вашия един IP.

Вашият сървър вероятно ще използва повече ресурси, когато хаква captcha на чужд хост, отколкото ако генерира captcha сам.

Предотвратява

  1. http_referer проверка
  2. ограничаване на заявките за един IP до напр. 5 / минута
  3. добра обработка на сесията и трудни бисквитки
  4. не е невъзможно да се направи обратно инженерство на javascript, но колкото по-сложен е вашият javascript, ...
  5. трябва да намерите модел, който разпознава резултата на чуждия хост. най-лесният подпис може да бъде полето за заглавка Location, което води до /path/success.html или /path/tryagain.php

Предизвикателство:

Отделих малко време, за да подготвя пример: http://woisteinebank.de/test/

В този пример прикачвам ключове към session_id(); и го записвам в базата данни. Чрез session_regenerate_id(); имам нова сесия за всяка заявка. В check.php сравнявам стойностите на базата данни със стойностите на $_GET.

Опитайте се да намерите начин да получите пиявица тази captcha, ще се опитам да защитя. Всеки път, когато използвате успешно моята captcha на вашия сайт, аз се опитвам да го защитя.

person Daniel W.    schedule 08.07.2013
comment
какво пречи да се направи екранна снимка? - person Eva; 08.07.2013
comment
дайте ми няколко минути за демонстрация - person Daniel W.; 09.07.2013
comment
Благодаря за примера Дан, но не виждам как това предотвратява това, за което говоря. Сесията няма да се промени, освен ако не пропускам нещо тук (извинявам се, ако пропускам) - person Eva; 09.07.2013
comment
Виждам актуализацията ти, Дан. Въпреки че смятам, че имате някои интересни идеи, вярвам, че не разбирате какво имам предвид, като показвам изображението на потребител на сайта. Имам предвид, че скриптът/програмата (която може да използва прокси услуга като Tor) ще копира изображението и след това ще го предостави на потребител за решаване. След като информацията бъде решена, решението се въвежда от същия този скрипт. В този случай идентификаторите на сесии са напълно без значение, тъй като нямат нищо общо с решаването на CAPTCHA. Въпреки че може да изисква повече ресурси, разрешаването на CAPTCHA може да бъде печелившо, напр.: спам - person Eva; 09.07.2013
comment
За съжаление напоследък съм малко зает, но когато имам време, ще се опитам да сложа някакъв пример в Github - person Eva; 09.07.2013
comment
Мисля, че разбирам какво имате предвид, но има много обстоятелства, които ви пречат да злоупотребявате ефективно с captcha. Свържете IP-то със сесията, поискайте captcha през tor, при изпращане, за да го разрешите с различен ip =› невалидна заявка. Всичко може да е възможно, но не и по начин, който ефективно да злоупотребява с captcha. Все пак интересен въпрос! Надяваме се, че и други ще допринесат с идеите си. - person Daniel W.; 09.07.2013