Борба със спама от роботи по различен начин

Имам уебсайт с проста форма, която публикува въведени данни като туитове в акаунт в Twitter.

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

Сега искам да създам проверка, която не изисква никакъв вид captcha.

Това си мислех и имам нужда от вашето честно мнение.

Ако роботите публикуват своите неща, без да използват мишка или клавиатура (вероятно чрез използване на някакъв вид генериран скрипт), тогава това всъщност означава, че те не могат да дадат никакъв вид фокус върху самата форма.

Идеята ми е да създам просто js условие, че формулярът не може да бъде изпратен, без да се получи някакъв вид фокус.

Какво мислиш за това? Някакви други подобни идеи?

Благодаря ти!


person Slavisa Perisic    schedule 03.10.2012    source източник
comment
Ако изобщо не заредите javascript, ще работи ли? Защото ботовете вероятно не зареждат js.   -  person Calavoow    schedule 03.10.2012
comment
Мисля, че това е лоша идея, тъй като POST заявките могат да се изпращат директно с Perl, cURL, Python, каквото и да е, заобикаляйки напълно вашата форма и изпращайки данните директно към сървъра като POST заявка.   -  person adeneo    schedule 03.10.2012
comment
Съгласен съм. Моля, прочетете отговора по-долу и представените коментари :)   -  person Slavisa Perisic    schedule 03.10.2012


Отговори (1)


Една идея за туитване на съобщения, които не са валидирани, звучи доста незащитено сама по себе си. Все пак има няколко начина да минимизирате спама.

Например можете да приложите вариант на honeypot, който добавя друго поле към формуляра за изпращане , но по начин, който е скрит от потребител на живо. Ботът би го попълнил по погрешка и вие бихте могли да откажете изпращането от страна на сървъра - вярвате или не, повечето спам коментари идват от роботи, така че дори основен подход като този може драстично да намали количеството изпратено злонамерено съдържание.

Вие сте прави в предположението си, че повечето роботи публикуват "без да използват мишка или клавиатура" - това е много по-тривиално, отколкото да се симулира дейност от страна на клиента. Отново, можете да използвате това в своя полза - добавете поле, което ще бъде попълнено с JS и валидирайте съдържанието му от страната на сървъра.

person Oleg    schedule 03.10.2012
comment
Нещо повече, използвайте скрито поле за въвеждане с множество data- атрибути като числа (напр. data-num1=7 data-num2=5), след което използвайте javascript, за да съберете тези числа заедно и да попълните стойността на скрития вход. При валидиране, ако въведеното е нещо различно от сбора на двете числа, тогава вероятно е спам. - person Richard Parnaby-King; 03.10.2012
comment
Интересна идея, вече направих нещо подобно преди малко. По принцип мога да внедря js, който запълва скритото поле с маловажен низ и изпраща формуляра само ако скритото поле има тази стойност. В противен случай няма да бъде изпратено. Какво ще кажете за това? - person Slavisa Perisic; 03.10.2012
comment
ИЛИ да използвате javascript, за да добавите скрито поле за въвеждане след 5 секунди? Ако полето липсва, тогава спам. - person Richard Parnaby-King; 03.10.2012
comment
Страхотно, няколко секунди преди мен :) - person Slavisa Perisic; 03.10.2012
comment
Проблемът с използването на JS или друга ненатрапчива техника (recaptcha е толкова натрапчива) е, че ако някой наистина иска да се насочи към вашия сайт, вероятно ще успее. Всяка логика, изпълнена от страна на клиента, ще бъде изложена на симулиране от злонамерения скрипт - person Oleg; 03.10.2012