Zjednodušenie spam ochrany

pmasarik | Sobota 8. 09. 2007, 14.01 | Webdesign

Moja nedávno vymyslená ochrana proti komentárovému spamu prešla síce zatiaľ len krátkou skúškou, ale zatiaľ funguje bez problémov. Preto som sa rozhodol trochu na nej zapracovať aj keď môj súčasný chrípkový stav mi v tom trochu bráni.

Trochu vysvetlenia ako to funguje

V HTML sa dá ako odosielacie tlačítko použiť buď <input type="submit">, alebo <input type="image">. Pri odosielaní pomocou <input type="image"> sa odosielajú aj súradnice x a y kam človek klikol a to je základ celej ochrany.

Prvotný nápad bol generovať obrázok s pozadím na určitej pozícii ktorú si niekam uložím a následne po odoslaní ju skontrolujem či človek klikol na správne miesto v obrázku. Nevýhody tohoto riešenia sú spomenuté v komentároch pod daným článkom.

  1. slepí človek sa ťažko trafí na farebné pozadie v obrázku
  2. po vypnutí zobrazovania obrázkov sa nám nezobrazí naše krásne tlačítko, len hodnota alt ak ju máme vyplnenú
  3. ako spomenul rony vo svojom komentári tak či ide o spamera alebo o človeka sa zisťuje až po odoslaní komentára na server
  4. nedá sa odoslať formulár enterom (enter zasiela súradnice x=0 a y=0 presne ako spamer) toto by sa možno dalo nejako ošetriť, zatiaľ som ale neprišiel na to ako to urobiť

Za výhody by som zase označil nasledovné…

  1. žiadny javascript
  2. žiadne otravovanie opisovaním nečitateľných znakov (CAPTCHA a podobné…)
  3. nasadenie je dosť jednoduché

Večerné zaspávanie uvoľňuje mozog

Včera keď na hodinkách svietilo 23:42 a ja som stále nemohol kvôli chrípke zaspať ma napadla jedna možno skvelá vec, načo zisťovať kam presne klikol keď mi stačí zistiť len či niekam klikol.

Pre menej chápavých SPAMer odosiela formulár systémom ktorý mi pošle súradnice x a y rovné nule. Stačilo by teda skontrolovať či x!=0 a y!=0 s čoho nám jasne vyplýva, že to bude asi človek a môžeme jeho komentár uložiť.

Ak by si to chcel niekto vyskúšať tak upozorním, že v PHP získate súradnice x a y tak, že získate hodnoty POST s týmto názvom $_POST['sub_x'] a $_POST['sub_y']. Názov POSTu vzniká z hodnoty name="sub" pri danom <input type="image"> takže to kľudne môže byť $_POST['submit_x'] ak máte pri inpute name="submit".

V PHP kóde kde sa ukladá komentár, stačí pridať takúto jednoduchú podmienku:

if ($_POST['sub_x'] != 0 && $_POST['sub_y'] != 0) {
 // vsetko je ok, mozeme ulozit komentar
} else {
 // si spamer chod prec s mojeho webu...
}

Neviem či dokážu spamovacie roboty vygenerovať hodnotu POST, aby dokázali poslať súradnice, ale ak by k tomu prišlo tak stačí len nasadiť generovanie obrázkov s pozadím na určitej pozícii a hneď to bude menej priestrelné.
Pre tých čo majú problém aj s tým, že sa prítomnosť spamera zisťuje až na strane serveru zatiaľ zostáva len jediné riešenie, použiť skrytie formulára pomocou javascriptu.

PS: na tomto webe je to už nasadené…


Páči sa vám tento článok, zalinkujte ho:

««« Predchádzajúci text: Ochrana proti spamu v komentároch - edit

Verzia pre tlač | 8 komentárov | 1438x

Komentáre k textu

Rss komentářů tohoto textu - Formulár pre nový komentár

1
reaguj[1] web Pjotr

Pekné riešenie. Ideš ho aj odskúšať? Čo keby robotík posielal podľa mena odosielacieho tlačidla hodnoty súradníc rôzne od nuly? Je to možné?

Sobota 8. 09. 2007, 14.08
2
reaguj[2] web pmasarik

[1] Pjotr: ty si rýchli, ešte som to ani poriadne neskontroloval a už si spomenul presne to čo som dopisoval na koniec článku :)

A už som to aj nasadil na môj web, nech sa to odskúša…

Sobota 8. 09. 2007, 14.16
3
reaguj[3] web Pjotr

[2] pmasarik: to vieš, asi sa ten Tvoj dodatok k článku dostal ku mne skôr ako do článku ;-D.

Sobota 8. 09. 2007, 16.02
4
reaguj[4] web pmasarik Stále bez jediného spamu

Zatiaľ to funguje na 100%… :)

Streda 12. 09. 2007, 20.48
5
reaguj[5] web pmasarik

Takže už preniklo zopár robotov aj cez túto ochranu a navyše mnoho útokov sa dostane k odoslaniu na server, takže nezostáva nič iné ako nasadiť spomínaný JS.

Sobota 29. 09. 2007, 13.40
6
reaguj[6] Pokusník pokus

fe er hokus pokus

Piatok 5. 10. 2007, 17.50
7
reaguj[7] web Acro

100% ochrana skoro nejde vytvořit.

Sobota 31. 05. 2008, 18.39
8
reaguj[8] web ja

[7] Acro: presne tam, vzdy je to jen kompromis

Pondelok 1. 09. 2008, 21.08
Pridaj komentár!

  Gravatar povolený.




Kliknutím vložíš: Vlož smajla :-) Vlož smajla :-( Vlož smajla ;-) Vlož smajla :-D Vlož smajla 8-O Vlož smajla 8-) Vlož smajla :-? Vlož smajla :-x Vlož smajla :-P Vlož smajla :-|
Komentár je formátovaný Texy! syntaxou. Nie je povolené HTML, odkazy sa prevedú automaticky. Ak sa komentár nezobrazí, neprešiel bezpečnostnou kontrolou a ja ho musím schváliť. Nevkladajte ho prosím znovu.