Antispam ochrana – formulare
- Duch.Veliky
- Člen | 68
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 :)
- Duch.Veliky
- Člen | 68
A ty jsi koukal na to co mi posíláš? Když klikneš na adresu jeho add
on, tak jaksi nefunguje
https://componette.org/search/?…
- argosovo
- Člen | 54
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
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
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
já s úspěchem používám toto:
- 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…
- 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
- 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
n.u.r.v. napsal(a):
já s úspěchem používám toto:
- 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…
- 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
- 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
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
@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
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
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
@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
@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)