mokhosh / muddle
Obfuscate emails and strings in PHP and Laravel
Fund package maintenance!
Mo Khosh
Requires
- php: ^8.2
- illuminate/contracts: ^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1
- orchestra/testbench: ^9.0.0
- pestphp/pest: ^3.5
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
README
Please, don't just put plain raw emails on your web pages. Bots are going to scrape your pages and fill all of our inboxes with spam emails.
Obfuscate emails and strings in PHP and Laravel to keep those nasty bots away from finding your email or worse, your users' emails.
This package uses different strategies to obfuscate clickable and non-clickable emails, so you can choose what suits your needs best.
Installation
You can install the package via composer:
composer require mokhosh/muddle
Usage
In Laravel Projects:
{{-- instead of handing your emails to spammers like this: --}} <a href="mailto:{{ $user->email }}">{{ $user->name }}</a> {{-- do this: --}} <x-muddle-link :email="$user->email" :title="$user->name" /> {{-- and we will confuscate the email in random ways to make it impossible for bots to steal your emails --}} {{-- default strategy components based on config --}} <x-muddle-link email="test@example.com" title="email" /> {{-- muddled email link --}} <x-muddle-text email="test@example.com" /> {{-- muddled email text --}} {{-- specific link strategy components --}} <x-muddle-random email="test@example.com" title="email" /> {{-- picks a random strategy each time --}} <x-muddle-append email="test@example.com" title="email" /> <x-muddle-concatenation email="test@example.com" title="email" /> <x-muddle-encrypt email="test@example.com" title="email" /> <x-muddle-entities email="test@example.com" title="email" /> <x-muddle-hex email="test@example.com" title="email" /> <x-muddle-rotate email="test@example.com" title="email" /> {{-- specific text strategy components --}} <x-muddle-text-random email="test@example.com" /> {{-- picks a random strategy each time --}} <x-muddle-text-append email="test@example.com" /> <x-muddle-text-concatenation email="test@example.com" /> <x-muddle-text-display-none email="test@example.com" /> <x-muddle-text-encrypt email="test@example.com" /> <x-muddle-text-entities email="test@example.com" /> <x-muddle-text-hex email="test@example.com" /> <x-muddle-text-rotate email="test@example.com" />
use Mokhosh\Muddle\Facades\Muddle; use Mokhosh\Muddle\Strategies\Text; use Mokhosh\Muddle\Strategies\Link; // default strategy Muddle::text('test@example.com'); Muddle::link('test@example.com'); // specific strategy Muddle::strategy(text: new Text\Encrypt)->text('test@example.com') Muddle::strategy(link: new Link\Encrypt)->link('test@example.com');
In plain PHP Projects:
use Mokhosh\Muddle\Muddle; use Mokhosh\Muddle\Strategies\Text; use Mokhosh\Muddle\Strategies\Link; $muddle = new Muddle( text: new Text\Random, link: new Link\Random, ); $muddle->link('test@example.com');
Configuration
You can publish the config file with:
php artisan vendor:publish --tag="muddle-config"
This is the contents of the published config file:
return [ /* |-------------------------------------------------------------------------- | Default Strategy |-------------------------------------------------------------------------- | | Set default strategies for obfuscating text and email links | */ 'strategy' => [ 'text' => \Mokhosh\Muddle\Strategies\Text\Random::class, 'link' => \Mokhosh\Muddle\Strategies\Link\Random::class, ], ];
Optionally, you can publish the views using
php artisan vendor:publish --tag="muddle-views"
Testing
composer test
Todo
- Add Dusk tests
- Make loading components dynamic
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
- Mo Khosh
- Joe Tannenbaum for the inspiration.
- Spencer Mortensen for the information.
License
The MIT License (MIT). Please see License File for more information.