Erik
Forum Replies Created
-
Forum: Plugins
In reply to: [AntiSpam for Contact Form 7] Possible EnhancementHi @jackrus60,
I wanted to drop another quick update here! Your initial report actually sent me down a bit of a rabbit hole analyzing my server logs, and I ended up discovering some fascinating details that perfectly explain the exact type of spam you were dealing with.
After analyzing the attacks, I managed to isolate the two distinct types of bots currently targeting Contact Form 7:
1. The “Dumb” Scrapers (The Most Common) The first type exploits the fact that CF7 REST API endpoints are highly predictable out-of-the-box. These bots simply scrape the form ID and send a direct
POSTpayload to the endpoint. They don’t even visit the visual website, load the HTML, or execute JavaScript. They are very common but relatively easy to block.2. The Advanced Distributed Bots (What you experienced) The second type of bot—which is responsible for the single-word, high-entropy spam you reported—is much more advanced. They are using headless browsers (like Selenium or Puppeteer) to mimic real user behavior.
Looking at the logs, I saw a “distributed” attack pattern:
- The Scout: A single IP visits the page, fully renders the content, and executes the JavaScript. It actually requests the CF7 validation schema to map out exactly which fields exist and are required. To avoid getting banned, the Scout never submits the form.
- The Workers: The Scout then passes this data blueprint to “Worker” IPs. These workers rotate their IP addresses and blast the form with submissions using the random strings you noticed.
Because these advanced bots execute JavaScript and read the form schema perfectly, traditional frontend protections (like simple hidden fields or changing the endpoint via JS) often fail. This is exactly why the server-side High Entropy / Anti-Gibberish filter I added in the recent update is so critical—it catches them based on the unnatural math of their payload (like 6 consecutive consonants), regardless of how perfectly they faked the browser submission.
Anyway, I thought you might find this technical background interesting since your detailed report was the catalyst for figuring this out! Thanks again for helping me improve the plugin.
Hi Heiko,
Thank you so much for providing that specific user agent! That is incredibly helpful.
Thanks to BrowserStack—who kindly sponsored the project with a free account to test the antispam plugin—I can actually run very deep, remote tests on real mobile devices. As soon as I have a bit of free time, I will jump in and run some thorough tests on that exact iOS setup. I want to be absolutely sure that Safari on iOS doesn’t have some aggressive, heuristic autofill behavior that is triggering the honeypots behind the scenes.
Currently, my schedule is a bit tied up because I am finalizing the release of a companion plugin called SMTP for Contact Form 7. It actually features some very interesting integrations with this AntiSpam plugin. For example, it can send you regular recap reports not only of the emails successfully sent and received, but also of the ones that were blocked as spam.
Given your agency’s workflow, I highly recommend checking it out! It could save you a lot of headaches by proactively letting you know if legitimate emails are getting caught in the spam filters, allowing you to catch issues before your customers even notice or complain.
Thanks again for your continuous feedback, your detailed reports, and for helping me improve the plugin. I really appreciate it!
Best regards, Erik
Hi Heiko,
Thank you so much for the kind words! I’m really glad to hear that you like the honeypot fix, I think it turned out to be a very robust approach.
Regarding your suggestion for the hook: you actually read my mind! Providing a developer-friendly hook is definitely the smartest and fastest way to handle this, rather than building a heavy UI tab just for this edge case.
However, instead of creating a specific
cf7a_enable_b8hook, I was thinking about doing something even more flexible. If you look atCF7_AntiSpam_Filters.php(around lines 54-78, where the active filters are loaded), my idea is to introduce a global filter right there that passes the entire array of active filters and the form ID.This way, developers could selectively
unset()not just the B8 filter, but any filter (like GeoIP, Language, etc.) on a per-form basis. It would look something like this:PHP
add_filter( 'cf7a_active_filters', function( $filters, $form_id ) { // Disable B8 filter for form ID 123 if ( 123 == $form_id && isset( $filters['b8'] ) ) { unset( $filters['b8'] ); } return $filters; }, 10, 2 );I will definitely work on implementing this in one of the upcoming updates, as it adds a ton of flexibility for advanced users and agencies like yours.
Thank you again for all your testing and your brilliant suggestions! It really means a lot to me, and it’s feedback like yours that helps the plugin grow!
Best regards, Erik
Hi Heiko,
Thanks for reaching out and for the detailed feedback!
You are correct that
autocomplete="fill"is not a standard HTML value, but this is actually an intentional design choice rather than a bug.Spam bots have become quite sophisticated. If they scan the code and see a field with
autocomplete="off"(or no autocomplete attribute at all), they often recognize it as a honeypot and skip it, making the trap useless. By using a non-standard value like “fill”, the goal is to trick the bots into interacting with the field, while trying to prevent standard browsers from getting the green light to autofill it.However, your finding shows that a specific browser or password manager aggressively stepped in and forced the autofill anyway, likely because it recognized the field name as “address” and ignored the autocomplete rules entirely.
I would love to investigate this false positive further. I guess you use Flamingo to log your submissions, could you check the details of that specific flagged message in the Flamingo interface? It would be incredibly helpful if you could share the User-Agent string of that specific visitor.
Thanks again for your help in improving the plugin!
Best regards, Erik
Hi Heiko,
I just wanted to drop a quick message to let you know that the new update (version 0.7.6) is finally live!
Regarding the Honeypot issue, I think I’ve managed to implement a really nice solution. Instead of just removing the default names, the plugin now dynamically compares its internal honeypot list with the actual fields present in your specific form during creation. It only injects the honeypots that do not match your real fields. It does the exact same dynamic comparison during the submission validation and the Flamingo cleanup phases. This completely eliminates any false positives, while creating a seamless structure that is practically impossible for a bot to distinguish from legitimate fields!
As for the custom “per form” settings (like disabling the B8 filter on specific forms), I am currently researching the best technical approach to build that dedicated tab seamlessly into the CF7 editor. In the meantime, I have published a comprehensive list of the plugin’s Hooks, which you might find useful for some custom manual implementations: CF7 AntiSpam Wiki – GitHub
Since the honeypot and false-positive issues should be fully resolved with this release, I am going to go ahead and mark this thread as resolved. Of course, if you update and still experience any weird behavior, please feel free to reopen this thread or start a new one!
Thank you so much again for your incredible feedback, your debugging efforts, and your support.
Best regards, Erik
Forum: Plugins
In reply to: [AntiSpam for Contact Form 7] Keine E-Mails auf DesktopHi @khoehne,
I just wanted to drop a quick message to let you know that the new update (0.7.6) of the plugin is finally live!
This release includes the definitive fixes for both of the main issues you reported: the Canvas Sandbox security warning and the Honeypot false positives (the plugin now dynamically prevents collisions with your real form fields).
Thank you so much once again for your detailed logs, your testing, and your patience. Your feedback was absolutely crucial in helping me track down and completely solve these bugs.
Since everything is running smoothly in my final tests, I am going to go ahead and mark this thread as resolved. However, if you update the plugin and still experience any weird behavior or run into the same issues, please feel free to reopen this thread (or start a new one) and I will jump right back into it.
Thanks again for your awesome support!
Best regards, Erik
Hi Heiko,
I completely understand the issue about “per form” antispam configuration, and you make a great point.
To do exactly what you are asking in the best way possible, the ideal solution would probably be to create a dedicated “AntiSpam” tab directly inside the individual Contact Form 7 editor. Not only would this allow you to disable the B8 filter on a per-form basis, but it would also solve the current hassle of having to manually specify which fields the B8 filter should evaluate.
I will definitely think about how to implement this! While it won’t make it into the very next release, I have officially added it to my roadmap for future improvements.
Thanks again for the great feedback. Suggestions and real-world use cases from users like you are always incredibly useful for making the plugin better.
Forum: Plugins
In reply to: [AntiSpam for Contact Form 7] Keine E-Mails auf DesktopThe
language_incoherencelog is generated by a very strict bot-detection feature. To ensure a real human is submitting the form (and not a bot spoofing data), the plugin compares two different language readings:- Server-Side (HTTP Header): When the page loads, the server reads the hidden
Accept-Languageheader sent by the network request. - Client-Side (JavaScript): When the form is interacted with, our JavaScript asks your browser directly what its native configured language is (via
navigator.languages).
The plugin then compares these two lists. If there isn’t a single language overlapping between what the server received and what the JavaScript reported, it flags the submission as “incoherent.”
If you get a false positive please report it to me and I’ll check.
Thanks again for the feedbacks!
Forum: Plugins
In reply to: [AntiSpam for Contact Form 7] Keine E-Mails auf DesktopHallo @khoehne,
Thank you so much for taking the time to run these tests and for sharing the detailed logs! They are incredibly helpful and point exactly to the root cause of the issue.
As you can clearly see in the logs (
honeypot: [phone]andhoneypot: [zip, phone]), the plugin is blocking the submissions because it thinks those fields are honeypots. This is actually due to a bug in the plugin’s code (which another user also just reported) where standard field names like “phone”, “zip”, and “email” are forcefully checked as honeypots by default, conflicting with your actual form fields.Because the system registered multiple “spam” attempts from your IP due to these false positives, it eventually put your IP on the blocklist—which explains why it stopped working on your phone as well.
I am already working on a fix to completely remove these forced default names, and it will be included in the very next release.
Your current workaround—disabling the Honeypot and Browser Language checks—is absolutely perfect for now. Alternatively, if you want to re-enable the honeypot, you could simply rename your form fields (e.g., from
phonetoyour-phoneandziptoyour-zip).Thank you again for your patience, your thorough debugging, and for helping me improve the plugin. I really appreciate your support!
Best regards, Erik
Hi Heiko,
Spot on! Thank you so much for taking the time to dig into the code and test this in your local environment. You hit the nail on the head.You are absolutely right about
cf7a_get_honeypot_input_names(). Thatarray_mergewith the hardcoded defaults is a legacy logic flaw that forces those common field names to act as honeypots, completely ignoring the fact that you deleted them from the backend settings.I am already working on a fix for this. I will refactor that function to completely remove the forced defaults so that only the custom names defined in the settings will be checked as honeypots. This will be included in the very next release.
Thank you again for your incredible help and for making the plugin better. I really appreciate it!Best regards, Erik
PS about storing multiple configuration for different forms, could you explain to me why you would want to do this? You could create custom configurations using CF7’s additional configurations, but I’m wondering what use it would have.Hi Heiko,
First of all, thank you so much for using the plugin on so many of your projects! It truly makes me incredibly happy and proud to have such an awesome community supporting my work.
Regarding the false positives with the “email” and “zip” fields: to help me properly investigate and reproduce the issue, could you let me know exactly which multi-step plugin you are using? Sometimes, multi-step plugins manipulate the form’s hidden data or the DOM as users transition between steps. I want to run some tests to verify if that’s creating a mess with how the honeypot validation is processed.
As for your second question about storing different configurations for different forms: currently, the settings apply globally to the whole website. However, it’s a great feature request and something I can definitely consider for future updates!
Let me know about the multi-step plugin, and we’ll figure this out.
Best regards, ErikForum: Plugins
In reply to: [AntiSpam for Contact Form 7] Keine E-Mails auf DesktopHello @khoehne,
Thank you for the list of plugins. I’ve cross-checked them with my environment and, so far, I haven’t found any direct conflicts that would explain why the emails are blocked specifically (even using other security plugins).
To move forward and identify the exact cause, I’ve prepared a detailed troubleshooting and debug guide. This will help us see exactly what is happening on your server’s side in real-time: How to Report Bugs and Troubleshoot Issues
Could you please check you debug.log file after sending an email? if there is nothing there, can you please give a look at the debug tab in the plugin settings? In one of the two places there should be some clue about the malfunction
I apologize for the back-and-forth, but with that debug data, we should be able to pinpoint the issue very quickly. Thanks again for your patience and for helping me improve the plugin!
Best regards,
Forum: Plugins
In reply to: [AntiSpam for Contact Form 7] BUGHallo,
I’m marking this topic as resolved as I haven’t heard back from you in a while.
If you are still experiencing the issue or need further assistance, please feel free to open a new support thread.
When you do, I kindly ask you to follow the instructions at this link: https://wordpress.org/support/topic/how-to-report-bugs-and-troubleshoot-issues/.
This will provide me with the necessary context and debug information to help you much more effectively.Thank you!
Forum: Plugins
In reply to: [AntiSpam for Contact Form 7] Keine E-Mails auf DesktopTHIS IS A SUMMARY FOR USERS WHO ARE NOT GERMAN SPEAKERS
The ProblemUser @khoehne reported that their website forms were failing specifically on desktop browsers (Chrome, Edge, and Firefox) after submission, resulting in an error message and no emails being sent. Curiously, the forms worked perfectly fine on mobile devices (maybe caching involved).
The user noted that deactivating the plugin resolved the issue. The only clue in the browser console was a security warning:
“An iframe which has both allow-scripts and allow-same-origin for its sandbox attribute can escape its sandboxing”
The Solution & Explanation- The Cause: The issue is triggered by a Canvas Fingerprinting test used for bot detection. Desktop browsers have recently become stricter regarding sandbox security, causing this test to trigger warnings or blocks.
- The Fix: A permanent fix has been coded and will be included in the next official release.
- Immediate Workaround: To get forms working right away, users should disable the “Bot Fingerprinting” feature in the plugin settings. This bypasses the problematic canvas test entirely.
In any case, it’s worth noting that emails shouldn’t be blocked by this—it’s just a warning. Unfortunately, though, I can’t verify that.
- This reply was modified 2 weeks, 4 days ago by Erik.
Forum: Plugins
In reply to: [AntiSpam for Contact Form 7] Keine E-Mails auf DesktopHallo @khoehne! Vielen Dank, dass du dich gemeldet und uns diese Konsolenwarnung mitgeteilt hast.
Ich habe mir den Code angesehen, und du hast Recht. Das Problem wird durch den Canvas-Fingerprinting-Test ausgelöst, der in Desktop-Browsern wie Chrome, Edge und Firefox strenge Sandbox-Sicherheitswarnungen verursacht.
Ich habe den Code meinerseits bereits korrigiert. Da dies definitiv auch andere Nutzer betreffen kann, werde ich sehr bald ein neues Release mit der Korrektur veröffentlichen!
Ehrlich gesagt glaube ich nicht, dass diese spezielle Iframe-Warnung der eigentliche Grund dafür ist, dass deine E-Mails nicht versendet werden. Als schnelle Übergangslösung kannst du jedoch versuchen, die Bot-Fingerprinting-Funktion in den Plugin-Einstellungen zu deaktivieren. Dadurch wird der problematische Canvas-Test komplett umgangen und deine Desktop-Formulare sollten wieder funktionieren.
Um mir bei der weiteren Untersuchung des Problems mit der E-Mail-Zustellung zu helfen, könntest du mir bitte eine Liste der anderen Plugins schicken, die du derzeit installiert hast? Ich würde gerne prüfen, ob es irgendwo im Hintergrund zu einem Konflikt kommen könnte.
Nochmals vielen Dank für deine Hilfe und Geduld!
PS: Dies ist ein englischsprachiges Forum, und Englisch wäre die bevorzugte Sprache, danke!