innoweb/silverstripe-spamprotection-honeypot

Provides invisible honeypot spam protection for Silverstripe CMS.

Installs: 1 381

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 0

Open Issues: 0

Type:silverstripe-vendormodule

2.1.0 2024-06-20 02:42 UTC

This package is auto-updated.

Last update: 2024-10-20 03:17:18 UTC


README

Version Silverstripe Downloads Issues License

Overview

Provides invisible honeypot spam protection for Silverstripe CMS.

Creates form fields hidden from users that invalidate submission if the contained data has been tampered with. Also invalidates submissions that respond too quickly.

Requirements

Note: this version is compatible with Silverstripe 5. For Silverstripe 4, please see the 1 release line.

Installation

Run the following to add this module as a requirement and install it via composer.

$ composer require innoweb/silverstripe-spamprotection-honeypot

Then run dev/build.

Usage

Create a configuration file spamprotection.yml in app/_config with the following configuration:

---
Name: app-spamprotection
---
SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension:
  default_spam_protector: Innoweb\SpamProtectionHoneypot\SpamProtector\HoneypotSpamProtector

We also recommend changing the default field name from Captcha to something less obvious:

SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension:
  field_name: 'AdditionalInformation'

Then enable spam protection on your form by calling Form::enableSpamProtection().

public function ExampleForm()
{
    $form = new ExampleForm($this, 'Example');

    $form->enableSpamProtection();

    return $form;
}

You can change the amount time that is checked to see if the response is made too quickly with the following configuration.

Innoweb\SpamProtectionHoneypot\FormField\HoneypotField:
  time_limit: 12

This example changes the time to 12 seconds. The default is set to 8 seconds.

You can also change the default text used in the value field, overriding the translation using your lang file (e.g. app/lang/en.yml):

en:
    Innoweb\SpamProtectionHoneypot\FormField\HoneypotField:
        DefaultValue: 'Some text that should not be touched.'

This defaults to 'Please leave this as is.'.

Contributing

Please see contributing for details.

Credits

Thanks to studiobonito/silverstripe-spamprotection-honeypot and symbiote-library/silverstripe-spamprotection-honeypot for the inspirations.

License

BSD 3-Clause License, see License