Autor Zpráva
jirivo
Profil *
Nedávno mi na email začaly chodit vyplněné formuláře z mého webu s nesmyslnými údaji, tak jsem se pokusil ochránit formulář, aby se zamezilo robotům ho snadno odesílat. Vytvořil jsem jedno pole, kde je otázka kolik je 1+1 a pokud uživatel nevyplní správný výsledek správně, nedoje k odeslání formuláře, je tam na to podmínka v php

if ($_POST['ochrana'] == 2) {


Normálně to funguje, ale spamy mi chodí pořád, je možné, aby robot dokázal vyplnit logicky do pole dvojku?

Děkuji za pomoc
janbarasek
Profil
Takovéto "primitivní" testy mají roboti naučený! Lepší bude, když tam vložíš třeba captchu (obrázek), a pak budeš ověřovat, jestli se obsah obrázku rovná obsahu formuláře. Data přenášej přes seesion. Podmínku si budeš umět udělat, a captchu uděláš třeba takto:
<?php
$v = rand(10000,99999);
session_start();
$_SESSION["captcha"]=$v;
// Create a 100*30 image
$im = imagecreate(65,30);

// White background and blue text
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 166);

// Write the string at the top left
imagestring($im, 10, 10, 5, $v, $textcolor);

// Output the image
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);
?>  


Já to takto dělám už delší dobu a nemůžu si to vynachválit. Můžeš si změnit barvy textu a pozadí. Jak zakroutit text nevím, ale tohle ti bude určitě pro začátek stačit :-)
Radovan789
Profil *
janbarasek:
Tohle řešení je dneska už taky na dvě věci.

jirivo:
Já to řeším přes cookies, ještě se mě nikdy nestalo že by spam bot měl zaplé cookies a pro uživatele kteří mají vyplé cookies tam hodit reCaptchu.
Ben
Profil *
Achjo, a proč otravovat uživatele opisováním textu z obrázku, že? Co si pro začátek vytvořit pro běžného uživatele skryté pole třeba se jménem mail nebo email. Např [/pre]
takto:
<div style="visibility:hidden;">
 <input type="text" name="mail" value="" />
</div>

a ve zpracování formu ověřovat jestli je vyplněné, tak se nebude pokračovat ve skryptu, věřte, že takto se chytí více než 90% robotů
Ben
Profil *
zkuste radši místo vymýšlení superobrázků, vymyslet další řešení, které nebudou omezovat běžné uživatele!
Marek88
Profil
[#5] Ben: Přesně! Obrázky jsou nutné až tam, kde hrozí, že si někdo dá tu práci a udělá robota přímo proti konkrétní stránce.
Giga
Profil *
Proti spamu používam metódu časového razítka.
Časové razítko som realizoval prostredníctvom databázy. Pri otvorení stránky sa vygeneruje unikátny náhodný kód, ktorý je uložený s časom vzniku do databázy. Ten istý kód je v "hidden" poli formulára.
Pri odoslaní príspevku sa overuje či verifikačný kód v databázi existuje a ak áno, tak sa testuje jeho vek. Ak je starší ako 10 sekúnd, správa je prijatá. Databáza sa priebežne čistí od verifikačných kódov starších ako (napr.) 1 hodina. Funguje to veľmi dobre.
Radovan789
Profil *
Giga:
Nespletl jsis to s Cross-Site Request Forgery ? Tohle by botum zabránít nemuselo. To co píše ben je dost dobrá ochrana, skoro každý bot je vycvičen ktomu aby něco dopolnil do určitých inputů, do name="email" nacpe náhodný email. Tohle jsou boti kteří navštěvuji stránky přes zpětné odkazy a takhle se šíří internetem. Pak někdo může udělat bota speciálně na vrženou na danou stránku a tam už pomůže jen ten obrázek.
Keeehi
Profil
Radovan789:
Giga spoléhá na to, že robot stránku načte a ihned ji vyplní a odešle. Kdežto člověk ji většinou do deseti vteřin nestihne vyplnit a odeslat.
Radovan789
Profil *
Keeehi:
Tak to potom jo, zajímavé řešení :-)
Tomashekk
Profil
Ben:
toto co ty jsi navrhl, jsem začal cca v létě používat a zatím 100% úspěšnost

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0