Autor | Zpráva | ||
---|---|---|---|
jirivo Profil * |
#1 · Zasláno: 10. 12. 2010, 19:25:07
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 |
#2 · Zasláno: 10. 12. 2010, 19:30:04
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 * |
#3 · Zasláno: 10. 12. 2010, 19:36:58
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 * |
#4 · Zasláno: 10. 12. 2010, 21:26:27
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 * |
#5 · Zasláno: 10. 12. 2010, 21:31:02
zkuste radši místo vymýšlení superobrázků, vymyslet další řešení, které nebudou omezovat běžné uživatele!
|
||
Marek88 Profil |
#6 · Zasláno: 10. 12. 2010, 22:00:07
[#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 * |
#7 · Zasláno: 10. 12. 2010, 22:06:22
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 * |
#8 · Zasláno: 10. 12. 2010, 22:33:51
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 |
#9 · Zasláno: 10. 12. 2010, 22:43:15
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 * |
#10 · Zasláno: 10. 12. 2010, 22:55:21
Keeehi:
Tak to potom jo, zajímavé řešení :-) |
||
Časová prodleva: 3 dny
|
|||
Tomashekk Profil |
#11 · Zasláno: 13. 12. 2010, 17:55:50
Ben:
toto co ty jsi navrhl, jsem začal cca v létě používat a zatím 100% úspěšnost |
||
Časová prodleva: 13 let
|
0