Jaký problém máte?
Tři případy vypadají podobně, ale mají různé příčiny:
- Chodí spam. Vaše schránka se plní reklamou, odkazy nebo nesmyslným textem. Formulář propouští boty.
- Formulář hlásí chybu. Návštěvníci vidí „There was an error trying to send your message. Please try again later.“ (na webech v jiných jazycích v překladu). Může jít o ochranu proti spamu, nebo o problém s odesíláním e-mailů.
- Chybí skutečné poptávky. Nikdo si nestěžuje, ale nic nepřichází. Pak možná ochrana odmítá lidi, nebo e-maily nedorazí do vaší schránky.
Nejdřív určete, o který případ jde, a teprve potom přidávejte ochranu. Jak na to, popisuje oddíl „Doručování e-mailů, nebo ochrana proti botům?“.
Co Contact Form 7 nabízí sám
Contact Form 7 má zabudováno několik opatření proti spamu (ověřeno na verzi 6.1.7):
- Seznam zakázaných výrazů. CF7 porovnává každé odeslání se seznamem v „Settings → Discussion“ („Disallowed Comment Keys“). Shoda se počítá jako spam. Pomáhá to proti opakujícím se slovům a doménám, ne proti novým textům.
- Kvízové pole. Se značkou
[quiz]položí formulář otázku, kterou si sami určíte. Boti, kteří vyplňují jakýkoli formulář, neuspějí; boti cílení přímo na váš web projdou. - Akismet. S pluginem Akismet a klíčem Akismet kontroluje CF7 jméno, e-mailovou adresu a text přes službu Akismet.
- reCAPTCHA v3. CF7 načítá skript od Googlu a odmítá odeslání pod prahovou hodnotou skóre.
- Cloudflare Turnstile. CF7 integruje Turnstile; skript pochází od Cloudflare.
Seznam zakázaných výrazů a kvíz fungují bez externí služby. Akismet, reCAPTCHA a Turnstile posílají data vašich návštěvníků příslušnému poskytovateli a to patří do vašich zásad ochrany osobních údajů.
Kdy má další ochrana proti botům smysl
Specializovaná ochrana proti botům se vyplatí, pokud
- spam chodí i přes seznam zakázaných výrazů a kvíz,
- nechcete načítat skripty od Googlu nebo Cloudflare,
- chcete u každého odmítnutého odeslání vidět, proč bylo odmítnuto.
Pokud vašemu formuláři stačí kvíz, nic dalšího nepotřebujete. Ochrana, kterou nikdo nepotřebuje, je jen další zdroj chyb.
Nastavení SilentShield pro Contact Form 7
Oficiální plugin „SilentShield – Captcha & Anti-Spam“ chrání Contact Form 7 bez vlastního kódu. Otestovali jsme ho s Contact Form 7 6.1.7 a WordPress 7.0.
- Nainstalujte a aktivujte plugin z adresáře WordPressu.
- V „SilentShield → API / SilentShield“ zadejte svůj klíč, klikněte na „Validate“, zapněte „Activate API“ a uložte.
- V „SilentShield → Forms“ zapněte Contact Form 7.
Web musí běžet přes https, jinak formulář nelze odeslat. Všechny kroky a otestované pluginy formulářů najdete v návodu pro WordPress. Každé odeslání se započítává do kvóty, viz ceny a kvóty.
Testování skutečných odeslání a odmítnutých pokusů
Skutečné odeslání: Otevřete stránku v anonymním okně, vyplňte formulář ručně a odešlete ho. Měli byste vidět potvrzení CF7 se zeleným okrajem.
Odmítnutý pokus: Odešlete stejný formulář bez prohlížeče na rozhraní CF7. ID formuláře a hodnotu pro _wpcf7_unit_tag najdete ve zdrojovém kódu stránky, ve skrytých polích formuláře.
curl -X POST "https://example.com/?rest_route=/contact-form-7/v1/contact-forms/123/feedback" \
-F "_wpcf7=123" -F "_wpcf7_unit_tag=wpcf7-f123-p45-o1" -F "_wpcf7_container_post=45" \
-F "your-name=Test" -F "[email protected]" -F "your-message=Test"
Měli byste dostat odpověď s "status":"spam". Se SilentShield zní hláška „Behavior check“.
Doručování e-mailů, nebo ochrana proti botům?
mail_sentspammail_failedvalidation_failedV Contact Form 7 mají „spam“ a „e-mail se nepodařilo odeslat“ stejný výchozí text. Rozlišit je můžete na dvou místech:
- Barva okraje hlášky: oranžová znamená spam, červená znamená, že odeslání e-mailu selhalo – pokud váš motiv nepřepisuje barvy CF7.
- Odpověď v prohlížeči: V nástrojích pro vývojáře (karta Síť) obsahuje odpověď na
feedbackpolestatus, buďspam, nebomail_failed.
Pokud jde o mail_failed, ochrana proti botům odeslání propustila; problém je v odesílání e-mailů z WordPressu. Zkontrolujte pak nastavení e-mailu, například pomocí pluginu SMTP. Pokud jde o spam, odmítlo ho některé ochranné opatření. Se SilentShield hláška uvádí důvod, například „Behavior check“.
Omezení
- Žádná ochrana nezastaví spam, který člověk napíše ručně.
- Bez JavaScriptu v prohlížeči je odeslání do chráněného formuláře odmítnuto.
- SilentShield chrání formuláře před boty. Nenahrazuje firewall webových aplikací ani ochranu proti DDoS.