Antispam ochrana – formulare

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Duch.Veliky
Člen | 68
+
0
-

Zdravím,

používáte nějaký osvědčený antispam ve formulářích v Nette? Ale chci aby byl pasivní, tj neotravoval uživatele opisováním hesla, atd.

Díky :)

Michal Vyšinský
Člen | 608
+
0
-

A hledal si aspoň chvíli? https://forum.nette.org/…chy-antispam

Duch.Veliky
Člen | 68
+
0
-

A ty jsi koukal na to co mi posíláš? Když klikneš na adresu jeho add on, tak jaksi nefunguje
https://componette.org/search/?…

Michal Vyšinský
Člen | 608
+
+2
-

Stačí projít tu diskusi: https://gist.github.com/…zlml/6564127

argosovo
Člen | 54
+
0
-

Ahoj, můžete mi prosím někdo poradit jak implementovat tento antispam?
Stáhnu si soubor – který, dle diskuze mám nahrát do libs, v celém projektu ale nemám „libs“, takže vytvořím složky libs všude, kde mě napadne (app, vendor, ), s tím že nette mi snad vyhodí duplicitní třídu, pokud alespoň jednu z nich zaregistruje. Nezaregistrovalo – takže otevřu script, ve kterém je v poznámce napsáno
<code>
// Register extension
AntispamControl::register();
</code>

Zkusím tedy zaregistrovat v různých verzích do config.neon, nicméně stále to píše chybu – tedy že neexistuje metoda addAntispam().
Můžete mi prosím někdo poradit jak to funguje? Neříkám, že napsat vlastní antispam je složité, ale alespoň bych pochopil jak obecně zaregistrovat externí třídu…

Nebo používáte jiný/lepší doplněk?
Děkuji

X-mass
Člen | 6
+
0
-

Já si vytvořil vlastní antispam. Člověk sice musí opsat nějaké to slovíčko, ale za cca 8 let mi nepřišel ani jeden spam a to je na tom webu už 116000 přístupů… Stačí si vytvořit array do něj naskládat libovolný počet slov, přidat jeden input, do kterého se musí přepsat náhodně vybrané slovo a to se při odesílání zkontroluje zda je v daném poli… Vypadá to, že to není ani ochrana, ale jak píšu, za cca 8 let nepřišel ani jeden spam. Jednou jsem zkoušel nainstalovat PhpBB. Veřejně na netu bylo cca 14 dnů a za tu dobu přišlo 5 spamů a to má kdovíjaké zabezpečovací funkce… Holt něco jednoduchého je někdy lepší než cokoliv jiného… :)

Mysteria
Člen | 797
+
0
-

Já mám jako antispam klasickej výpočet jedno číslo plus druhý číslo. Výsledek mám dokonce v data atributech kvůli Nette validaci. Přes 20k UIP měsíčně a taky žádnej spam. Ale porovnání s phpBB není na místě, protože to fórum používá miliony lidí, takže když prolomí jeho ochranu tak toho zaspamují hodně. Kdyby se zaměřili na tvůj web, tak by ti to taky začali častějc obcházet. :)

n.u.r.v.
Člen | 485
+
+3
-

já s úspěchem používám toto:

  1. při načtení formuláře uložím (hidden pole, nebo ještě lépe session) čas zobrazení formuláře, po odeslání formuláře vypočtu čas mezi odesláním a načtením → pokud méně než např. 3,5,X…sekund, tak spam (člověk většinou tak rychle nepíše). Čas samozřejmě závisí na typu formuláře a typu dat…
  2. několik skrytých polí – kombinace typu hidden a pak klasický input type text skrytý pomocí css. Tyto inputy nazvat jako url, nebo email a při odeslání vyhodnotit jestli jsou vyplněné → pokud ano=spam
  3. pokud mi nevadí otravování userů, tak i textovou otázku tohoto typu: generuji 6-ti ciferné číslo random, mám napevno uložených několik typů otázek, např: Opište první a poslední číslo, první 3 čísla, první, předposlední a poslední. Random vyberu otázku, vygenerované číslo a id otázky uložím do session a při odeslání formuláře pak jen vyhodnotím… Otázka je u formuláře napsaná hezky česky, což už je pro roboty problém…

V 80–90% si roboti vylámou zuby na prvních dvou bodech, za 3 roky ani jeden spam…

Editoval n.u.r.v. (5. 2. 2016 10:51)

pata.kusik111
Člen | 78
+
+1
-

n.u.r.v. napsal(a):

já s úspěchem používám toto:

  1. při načtení formuláře uložím (hidden pole, nebo ještě lépe session) čas zobrazení formuláře, po odeslání formuláře vypočtu čas mezi odesláním a načtením → pokud méně než např. 3,5,X…sekund, tak spam (člověk většinou tak rychle nepíše). Čas samozřejmě závisí na typu formuláře a typu dat…
  2. několik skrytých polí – kombinace typu hidden a pak klasický input type text skrytý pomocí css. Tyto inputy nazvat jako url, nebo email a při odeslání vyhodnotit jestli jsou vyplněné → pokud ano=spam
  3. pokud mi nevadí otravování userů, tak i textovou otázku tohoto typu: generuji 6-ti ciferné číslo random, mám napevno uložených několik typů otázek, např: Opište první a poslední číslo, první 3 čísla, první, předposlední a poslední. Random vyberu otázku, vygenerované číslo a id otázky uložím do session a při odeslání formuláře pak jen vyhodnotím… Otázka je u formuláře napsaná hezky česky, což už je pro roboty problém…

V 80–90% si roboti vylámou zuby na prvních dvou bodech, za 3 roky ani jeden spam…

První bod ale udělá tvůj formulář naprsoto netestovatelný pomocí seleniových/akceptačních testů. Není přece možné, abych do toho testu musel napsal, že má 5s čekat. To by ty sady nikdy nedoběhly…

MokrOus
Člen | 5
+
0
-

Osobně si myslím, že v antispam je výjimka potvrzující pravidlo, že „je zbytečné psát vlastní řešení, které už mnozí často udělali lépe“. Antispam bych doporučil udělat vlastní (jak ostatně dělají i přispěvatelé výše) a to právě z toho důvodu, že čím menší výskyt toho řešení existuje, tím je větší pravděpodobnost, že se na ten web někdo zaměří.
Volil bych asi variantu mít v databázi sadu otázek/odpovědí. Zobraz otázku a user má napsat odpověď. Předání čísla otázky asi taky může být třeba ve skrytém poli formuláře. V sadě otázek můžou být třeba jednoduché matematické příklady, nebo třeba rozdělené přísloví („Jak se do lesa volá, …“, „Kdo jinému jámu kopá, …“) ale kreativitě se tu meze nekladou. Třeba jsem u sebe v archivu našel ještě slovní spojení typu Doplňte:
‚Olomoucké …‘, ‚Pythagorova …‘, ‚Achilova …‘.
Může to být i trochu zpestření často nudných formulářů.

MokrOuš

Editoval MokrOus (5. 2. 2016 12:11)

jiri.pudil
Nette Blogger | 1032
+
+1
-

@MokrOus Co když jsem dyslektik a napíšu, že se z lesa ozívá? Co když jsem cizinec žijící v Česku a i když se česky domluvím, nejsem tak zdatný, abych znal idiomy a přísloví? Co když mám základku dávno za sebou (jako já) a nedojde mi hned (jako mně teď), že „Pythagorova“ bude asi „věta“? Jen poukazuju na to, že podobné otázky předpokládají určité kulturní zázemí nebo jazykovou úroveň, které ale člověk z nejrůznějších důvodů vůbec nemusí mít.

A co když prostě jenom udělám typo? Podle mě není správné, aby něco, co je ve formuláři v kontextu jeho účelu nadbytečné, uživatele vůbec nějak otravovalo, natož aby to po něm vyžadovalo přemýšlení.

btw „Olomoucké …“ akceptuje syrečky, tvarůžky, nebo obojí? :)

Mysteria
Člen | 797
+
0
-

Přesně z tohohle důvodu většinou používám číselné příklady. Na druhou stranu otázkou je, jak hodnotné komentáře by zanechali lidé, které odfiltrují takovéhle jednoduché doplňovačky. Z vlastní zkušenosti, kdy stejně dobrou čtvrtinu musím smazat zejména z důvodu, že daný text nedává smysl nebo vypadá jak od člověka co neprolezl ani základkou (pravopisné chyby). Pak je dost velká šance, že člověk, co dokáže napsat „chiba spoměl sem si“ neprojede už přes Pythagorovu větu a ušetřím si alespoň práci. :)

jiri.pudil
Nette Blogger | 1032
+
+1
-

Moje pointa (první z nich) spočívala v tom, že ti takovéhle jednoduché doplňovačky můžou odfiltrovat i lidi, které odfiltrovat nechceš. A druhou pointu si dovolím parafrázovat titulem bible UI designu: „Nenuťte uživatele přemýšlet“. 5+2 je pořád něco, nad čím se musím pozastavit a zamyslet (byť krátce), a přitom to pro mě nemá vůbec žádný přínos kromě toho, že mi web neoznámí, že jsem robot. Většinou na internetech vyplňuju formuláře proto, že chci něco napsat, zveřejnit, koupit, rezervovat, zaregistrovat se apod., ne abych si procvičil počty :)

Z uživatelského pohledu mi dává smysl takové řešení, které nevyžaduje interakci (a pokud ano, pak triviální jako např. reCAPTCHA) a ideálně ani pozornost. Spokojeně používám body 1 a 2 z příspěvku od @n.u.r.v. (+1 za tip se session, pak se prakticky nedá obejít kontrola času odeslání a útočníkovi se potom tolik nevyplatí něco zkoušet, když mu jeden post trvá pět vteřin)

Oli
Člen | 1215
+
0
-

@Mysteria to chceš říct, že pokud někdo udělá gramatickou chybu, tak mu smažeš příspěvek? Nebo těch chyb musí být více? Řekněme 3? Nebo 2 velký hrubky a jedna malá? … Aspoň tak jsem to z toho tvého příspěvku pochopil…

Ale abych nebyl uplně OT, tak se plně ztotožňuju s @jiri.pudil. Taky používám ty první 2 body nebo reCAPTCHU a naprostá spokojenost. Implementačně je asi nejjednodušší ta reCAPTCHA…

Mysteria
Člen | 797
+
+1
-

@Oli: Ano i ne. Pokud je v textu pár chyb, třeba v čárkách nebo podobných věcech tak mne to nezajímá. Většinou nečtu všechny nové příspěvky, i když by se to dalo. Ale pokud to proskenuju očima a najdu tam skvosty od lidí, kteří nezvládají učivo 1. – 3. třídy a nedokážou napsat jedinou větu bez skvostů jako spoměl, chiba a podobně tak ano, takovej příspěvek mažu. Ostatně s tím souhlasí při odesílání komentáře. Nepovažuju to za dobrou vizitku, když někam někdo přijde a vidí tam podobný věci.

Editoval Mysteria (5. 2. 2016 19:15)