CryptoProtect is a Proof of Work Captcha Form extension for Silverstripe's SpamProtection Module.
The Proof of Work mechanism leverages SHA256 hashing to use the computational power of the client's device, significantly deterring Spam-Bots from flooding forms.
Working demo on iloveunix.com/contact-us.
- Silverstripe CMS version 4 or 5
- Silverstripe SpamProtection Module version 3 or higher
Install using Composer:
composer require minimalic/silverstripe-cryptoprotect
Set CryptoProtect as the default captcha in your project's config (e.g. spamprotection.yml
):
SilverStripe\SpamProtection\Extension\FormSpamProtectionExtension:
default_spam_protector: minimalic\CryptoProtect\Forms\CryptographicChallengeProtector
Refresh your database by navigating to your website's root directory in the shell and running:
vendor/bin/sake dev/build "flush=all"
Or use your base URL with:
/dev/build?flush=all
In the CMS, navigate to the "admin/cryptographic-challenges" area and generate new hashes.
Add new "Spam Protection Field" to your Form.
Fine-tune the hashing mechanism in your project's config (e.g. spamprotection.yml
). The currently available options with default values:
minimalic\CryptoProtect\Models\CryptographicChallenge:
difficulty_cycles: 100000
hashes_count: 20
hide_input_by: 'bootstrap'
show_calculation_status: true
show_progress_bar: true
hide_after_solving: true
Note: Increasing difficulty_cycles
may extend calculation times on slower devices (client-side).
A higher hashes_count
requires more time for hash regeneration (server-side).
hide_input_by
- Hide input field by using one of available options:
bootstrap
default, use the "visually-hidden" classstyle
use a "display: none" inline stylenone
show the input field
Note
The hash input field is always shown in browsers with disabled JS as fallback to be able to resolve the challenge by hand.
show_calculation_status
- Display a loading spinner/complete checkmark and status text
show_progress_bar
- Display a progress bar
hide_after_solving
- Hide the spinner/status and/or the progress bar after 4 seconds
Remember to flush your caches (?flush=all
) and regenerate hashes in the CMS whenever adjusting the configuration.
For more detailed information on configuring and utilizing the Spam Protection Field, visit the SpamProtection Module repository.
See License
Copyright (c) 2024, minimalic.com - Sebastian Finke All rights reserved.