„To je dobře, že vás pálí otázka techniky, nesmíte však techniku zas nějak jednostranně přeceňovat, abyste neupadli do zhoubného technicismu, který mění člověka v mechanickou součástku odlidštěného světa bezduché civilizace.“ Václav Havel (Zahradní slavnost)
maskot zápisníku

Chybějící Kousek Zápisník Antonína Daňka

Open Source, programování, internet,

kurzor

Upozornění na nový obsah pomocí RSS.

? Co je to RSS?

Upozornění na nový obsah pomocí e-mailu.


small_j0178366.jpg

Jednoduchá anti-spamová kontrola.

Už i k tomuto webu si našly cestičku spam-roboti. Jestli se vám stalo to samé, zde je řešení.

Předmluva

Nejedná se o nic převratného a nepřekonatelného, ale jako ochrana proti běžným robotům stačí. Jistě, na internetu je spoustu návodů na to, jak udělat nějakou ochranu prostřednictvím kontrolního obrázku, ale proč se namáhat. Takový robot stejně jen hledá formulář a když nějaký nalezne, odešle nějakou špínu jako je např. hromada odkazů. Pokud mu v cestě stojí jakkoliv jednoduchá překážka, zprávu se mu nepodaří odeslat, protože to by vyžadovalo napsání individuálního spam-skriptu pro každou ochranu. Z tohoto pohledu je vlastně i tato ochrana zbytečně složitá, protože by myslím bohatě stačilo dát před odeslání zatrhávací políčko, které by musel uživatel zatrhnout (i když možná že robůtci se snaží zaškrtnou všechno co jde, takže to není jisté).

Pokud někomu opravdu záleží na obejití nějaké kontroly, tak se mu to stejně podaří a to i u obrázků. Kdo zná filehosting rapidshare.de, tak ví že např. program USdownloader uměl (nebo ještě umí) automaticky rozpoznávat kód v kontrolním obrázku, nebylo to sice na 100% ale dost se tomu blížil, řekl bych tak 90%.

Tato ochrana spočívá ve vygenerování barvy, kterou musí uživatel díky svému zraku určit x-) a vybrat ji v seznamu.

*Zdrojové kódy byly odstraněny, pokud máte o tento anti-spam zájem, zmiňte se v komentářích a já je poskytnu.

Do odesílacího formuláře přidáme skryté políčko s identifikátorem barva, které bude nabývat hodnoty zamíchaného pole barvy, vždy použije první hodnotu pole, ale ta bude díky shuffle různá.

Pozn. Tuto proměnou pak budeme porovnávat s barvou jakou zadal uživatel. Kdybychom porovnávali odeslanou barvu přímo s proměnnou $barvy5b05d, porovnávali by jsme jednu hodnotu odeslanou uživatelem (který zadal barvu podle hodnoty $barvy5b05d) s hodnotou nově vygenerované barvy $barvy5b05d, tzn. že musíme obě položky (vzor i kontrolu) odesílat z původní stránky.

*Zdrojové kódy byly odstraněny, pokud máte o tento anti-spam zájem, zmiňte se v komentářích a já je poskytnu.

Zde se dostáváme k viditelné části věci, můžete upravit podle sebe. Já jsem vše dal do pěkného rámečku pomocí fieldset a použil jsem popisku legend. Vygenerovanou barvu jsem zobrazil jako pozadí čtverečku v tabulce, o tom jaká barva zde bude rozhodují jednoduché podmínky if, každý chápe že x-). Uživatel pak barvu zadá prostřednictvím formulářového prvku select, můžete si sem dát klidně obyčejné textové pole.

Ještě chci podotknout, že hodnotu barvy jsem nezadával v anglickém tvaru, ale v #RGB a navíc ne úplně přesně (trošku jiný odstín). To pro případ že by si přecejen chtěl někdo napsat speciální spam kontrolu obcházející skript (trošku jsem to tím stížil).

*Zdrojové kódy byly odstraněny, pokud máte o tento anti-spam zájem, zmiňte se v komentářích a já je poskytnu.

A tady mámě (trošku delší :-D ) finální podmínku, která naprosto triviálním způsobem otestuje, zda uživatel zvolil správnou barvu. Pokud je podmínka splněna, tzn. uživatel zadal správnou barvu, bude definována proměnná $neni_to_spam s hodnotou pravda, tento výstup už snadno zakomponujete do své kontroly před odesláním nějakého příspěvku, článku nebo čehokoliv jiného.

datum 24.08 /2006 - 19:06 tag programování, open source komentář 9 komentářů (přečteno: 3996x)

Související články:

Feedburner

GEOrss, už ho máš?

WebExpo 2009

Nenechte si ujít

Nejčtenější články za poslední půlrok.

Nejkomentovanější články za poslední půlrok.

Nejčastěji komentující čtenáři za poslední půlrok.

Nejkvalitnější komentář

Antonín Daněk

Tak bohužel, už jsem narazil na chybu. Občas nějaký ten spam pronikne. Je to sice jen metodou pokus-omyl, takže toho není moc, ale stejně.


Zaujal vás tento článek? Nezapomeňte, že je ve vaší moci ukázat stovkám dalších lidí, že tento článek se vám libí. Stačí kliknout na následující tlačítko. pridej.cz

Chcete být upozorňován(a) na nové texty? Pak si přidejte do své RSS čtečky zdroj pro články, bleskovy nebo komentáře a buďte tak informování o všem novém.

Neváhejte napsat k článku komentář (Co je to komentář ?), pokud máte k danému tématu co říci.

check


check



icon_smile.gif icon_sad.gif icon_biggrin.gif icon_confused.gif icon_cool.gif icon_twisted.gif icon_wink.gif icon_cry.gif icon_eek.gif icon_evil.gif icon_exclaim.gif icon_frown.gif icon_cheesygrin.gif icon_idea.gif icon_lol.gif icon_mad.gif icon_mrgreen.gif icon_neutral.gif icon_question.gif icon_razz.gif icon_redface.gif icon_rolleyes.gif icon_surprised.gif icon_arrow.gif icon_arrowd.gif icon_arrowl.gif icon_arrowu.gif


Prosím odpovězte na následující otázku (do formuláře zadejte pouze písmeno).

Jakou z následujících věcí by si vybral robot?
a) štěně b) kytičku od svého milého c) pečlivě naformátovaný soubor

Nápověda: Zkuste možnost c (ale uznám vám i b).


check


1

to abych se pokusil napsat nejakyho adaptibilniho bota, kterej se dokaze ucit =)

odpovědět

Gravatar

skilla

25.08 /2006 - 11:25


brak | průměr | kvalitní názor


2

Jo, taky jsem přemejšlel že bych si napasl nějakýho jednoduchýho spammera a provizorne ho nechal nekde na freehostingu spamovat :)) ale k tomu by bylo asi potreba automaticky spousteni skryptu a to na feecku nemaj.

odpovědět

Gravatar

Cartman

25.08 /2006 - 14:13


brak | průměr | kvalitní názor


3

Barvoslepej je nahranej...

odpovědět

Gravatar

mikke

26.08 /2006 - 12:14


brak | průměr | kvalitní názor


4

Jo, to jsem do toho článku původně taky napsal, že to je taky jako anti-barvoslepec, ale pak jsem si řekl že nebudu odrazovat:-D, tak zvolí hold jednu barvu a bude dávat tak dlouho odeslat dokud se nevygeneruje ta správná barva no ... tolik jich tam neni.

odpovědět

Gravatar

Antonín Daněk

26.08 /2006 - 12:26


brak | průměr | kvalitní názor


5

Zdravím,
mám několik poznámek.
1)
>... program USdownloader uměl (n ...
To je sice pravda, ale platí to je u defaultních písmen. Pokud člověk použije nějaký alternativní font(případně vytvoří vlastní), přídá písmenům rozdílná pozadí, nemá vůbec žádnou šanci : )

2)Ve zdrojovym kódu je přímo text barvy v hidden elementu :) Opravdu neni nic jednoduššiho, než si to pole přečíst. IMHO tak 60% botů, kterým se někdo trochu věnoval, tímto krásně proleze. Více bezpečnější mi přijde vkládat celý formulář pomocí js bez jakéhokoliv ošetření.

3) fci shuffle() bych nahradil fci random() na index pole ve výpisu hodnoty, není třeba pracovat s celým polem, bude to o řád rychlejší (což ale asi není rozhodující)

4)Ježiš co je to za konstrukci u toho ověřovacího if? x-(
Neni lepší, přehlednější a rychlejší porovnat je mezi sebou and fce in_array()?

Myšleno takto:

$_POST['barva'] == $_POST['spam'] and in_array{$_POST['barva'],$barva)

;o) :-D

Abych jen nekritizoval, tak musím říct, že nápad je to dobrý a v několika případech bude krásně fungovat.

Jen malé doporučení:
Je dobré zvyknout si na error_reporting(E_ALL), např. $_POST[spam] je proti doporučení php, správně je $_POST['spam']. Notice dokažou hodně ulehčit práci : ) Věřte mi, vím o čem mluvím ...

Snad jsem nebyl moc kritický, neberte to osobně, nápad je to dobrý, jen jsem chtěl poukázat na drobné chybky.

Jen tak dál!

LesTR
P.S. Někdo by si měl zkusit napsat příspěvek pod Firefoxem : ) Je to fakt peklo ...

odpovědět

Gravatar

LesTR

27.08 /2006 - 16:31


brak | průměr | kvalitní názor


6

1)Mno, co se týče toho US, používal jsem ho asi před rokem ale co si vzpomínám tak to nebyl úplně obyč vygenerovanej text, ale že tam ty znaky byly různě nakloněný a na pozadí bylo taky cosi. Na druhou stranu já osobně si nedovedu představit jak bych z toho ty ,,zdeformovaný" písmena přečetl takže to tak možná nebylo.
2)S tím já právě nesouhlasim, řekl bych že s takovým lama anti-spamen nidko nepočítá :-D, prostě si myslim že takovýchhle jednoduchých antispamů se dá udělat spousty a nevim jestli ti co dělaji roboty je naučí všechny obcházet. Je ale fakt, že kdyby se tenhle anti-spam začal používat na víc serverech a stálo by za to ho obcházet tak by to byla nejspíš otázka pěti minut. js je pro mě zatim tabu :-D
3)No v tomhle případě je to pole dost mini, ale je fakt,že random je profesionálnější no. (v případě tohodle blogu rád uberu ICcku trošku výkonu CPU, za ty výpadky si to zaslouží x-) )
4) No to určitě je :-), je fakt že jsem tu fci už jednou někde používal, ale vůbec mě to nenapadlo, jsem hold PHP samouk a zásoba fcí. který si pamatuju je mizerná.

Kritika mi nevadí, naopak jsem rád a taky jsem si vědom že nejspíš PHP píšu dost bordelácky :-/. Vadí mi akorád kritiky typu Nech toho a běž orat pole., ale na tom mě spíš hlodá to, že má vůbec někdo takový názory.

odpovědět

Gravatar

Antonín Daněk

27.08 /2006 - 19:02


brak | průměr | kvalitní názor


7

add1)Nevim presne jak to delal US, ale vetsinou to funguje na principu analyzy postupu pixelu na obrazku a jeho porovnavani se vzorem. Tedy hodne narocny algoritmus.
add2)To je prave velky omyl, kazdy poradny bot si projede ve formulari veskera hidden pole a s temi nejak zachazi. Pro zvyseni bespecnosti by rozhodne stacilo ulozit danou hodnotu napr. do SESSION ;-)
add3)A cim asi ty vypadky jsou zpusobeny?Nedokazu si predstavit stroje, kde na kazdem bezi x stovek takovychto situ. To musi byt sakra vykon ...[noflame]
add4)Ja taky neznam vsechny fce, od toho je tady manual : )

Jinak kritiky tipu nech toho a bez orat pole se ode me nedockate : )) Kdyz uz kritika, tak podlozena!
Jinak si zkuste dat do nejakych konfiguraku ten error_reporting(), jiste se pobavite. Osobne kdyz sem to tenkrat nastavil poprve, tak sem se za bricho popadal :-)

Jinak ten js hraje na to, ze je to client skripting, ktery se vetsine botum ani nezobrazi ;o)
hehe, uz se naucil psat ty smajliky. Js je fajn, jen by mel jeste vratit pozici kurzoru na puvodni ;o) takhle je fakt nepouzitelnej, jen k nasrani.

Mno nic, gl

odpovědět

Gravatar

LesTR

27.08 /2006 - 19:40


brak | průměr | kvalitní názor


8

- Když de někdo do freehostingu tak s shitama snad musí počítat a myslim že jen z ty reklamy maj peněz dost, navic ty vypadky byly az donedavna prijatelny, musí hold s rozvojem posilovat kucí no, koupili novy domeny ale servery asi ne.
-Použiju poupravenou větu, myslim že z jedný reklamy. Je to shit, ale můj :-D .
- error_reporting() zkusim.
- O js uvažuju, uvidíme co čas přinese :-), jo tenhle na kládání těch smajlů je trošku depresivní.x-)

odpovědět

Gravatar

Antonín Daněk

27.08 /2006 - 20:47


brak | průměr | kvalitní názor


9

Tak bohužel, už jsem narazil na chybu. Občas nějaký ten spam pronikne. Je to sice jen metodou pokus-omyl, takže toho není moc, ale stejně.

odpovědět

Gravatar

Antonín Daněk

31.03 /2007 - 14:46

danek<zavináč>antonindanektečkacz

brak | průměr | kvalitní názor


Navrženo pro přenos v binární soustavě | Kdo stojí za tímto blogem? | © Antonín Daněk | Autorské dílo

TOPlist