NAME

Plack::Middleware::Antibot - Prevent bots from submitting forms

SYNOPSIS

use Plack::Builder;

my $app = { ... };

builder {
    enable 'Antibot', filters => [qw/FakeField TooFast/];
    $app;
};

DESCRIPTION

Plack::Middleware::Antibot is a Plack middleware that prevents bots from submitting forms. Every filter implements its own checks, so see their documentation.

Plack::Middleware::Antibot uses scoring system (0 to 1) to determine if the client is a bot. Thus it can be configured to match any needs.

$env

Some filters set additional $env keys all prefixed with antibot.. For example TextCaptcha filter sets antibot.text_captcha to be shown to the user.

Options

max_score

When accumulated score reaches this amount, no more filters are run and bot is detected. 0.8 by default.

filters

enable 'Antibot', filters => ['FakeField'];

To specify filter arguments instead of a filter name pass an array references:

enable 'Antibot', filters => [['FakeField', field_name => 'my_fake_field']];

fall_through

enable 'Antibot', filters => ['FakeField'], fall_through => 1;

Sometimes it is needed to process detected bot yourself. This way in case of detection $env's key antibot.detected will be set.

Available filters

Plack::Middleware::Antibot::FakeField (requires Plack::Session)

Check if an invisible or hidden field is submitted.

Plack::Middleware::Antibot::Static (requires Plack::Session)

Check if a static file was fetched before form submission.

Plack::Middleware::Antibot::TextCaptcha (requires Plack::Session)

Check if correct random text captcha is submitted.

Plack::Middleware::Antibot::TooFast

Check if form is submitted too fast.

Plack::Middleware::Antibot::TooSlow

Check if form is submitted too slow.

ISA

Plack::Middleware

METHODS

prepare_app

call($env)

INHERITED METHODS

wrap($app, @args)

AUTHOR

Viacheslav Tykhanovskyi, <viacheslav.t@gmail.com>

COPYRIGHT AND LICENSE

Copyright (C) 2015, Viacheslav Tykhanovskyi

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.