NAME
Mojolicious::Plugin::CSRFDefender - Defend CSRF automatically in Mojolicious Application
VERSION
This document describes Mojolicious::Plugin::CSRFDefender.
SYNOPSIS
# Mojolicious
$self->plugin('Mojolicious::Plugin::CSRFDefender');
# Mojolicious::Lite
plugin 'Mojolicious::Plugin::CSRFDefender';
DESCRIPTION
This plugin defends CSRF automatically in Mojolicious Application. Following is the strategy.
output filter
When the application response body contains form tags with method="post", this inserts hidden input tag that contains token string into forms in the response body. For example, the application response body is
<html>
<body>
<form method="post" action="/get">
<input name="text" />
<input type="submit" value="send" />
</form>
</body>
</html>
this becomes
<html>
<body>
<form method="post" action="/get">
<input type="hidden" name="csrf_token" value="zxjkzX9RnCYwlloVtOVGCfbwjrwWZgWr" />
<input name="text" />
<input type="submit" value="send" />
</form>
</body>
</html>
input check
For every POST requests, this module checks input parameters contain the collect token parameter. If not found, throws 403 Forbidden.
OPTIONS
plugin 'Mojolicious::Plugin::CSRFDefender' => {
parameter_name => 'param-csrftoken',
session_key => 'session-csrftoken',
token_length => 40,
error_status => 400,
error_template => 'public/400.html',
};
- parameter_name(default:"csrftoken")
-
Name of the input tag for the token.
- session_key(default:"csrftoken")
-
Name of the session key for the token.
- token_length(default:32)
-
Length of the token string.
- error_status(default:403)
-
Status code when CSRF is detected.
- error_content(default:"Forbidden")
-
Content body when CSRF is detected.
- error_template
-
Return content of the specified file as content body when CSRF is detected. Specify the file path from the application home directory.
- onetime(default:0)
-
If specified with 1, this plugin uses onetime token, that is, whenever client sent collect token and this middleware detect that, token string is regenerated.
METHODS
Mojolicious::Plugin::CSRFDefender inherits all methods from Mojolicious::Plugin and implements the following new ones.
register
$plugin->register;
Register plugin in Mojolicious application.
SEE ALSO
REPOSITORY
https://github.com/shibayu36/p5-Mojolicious-Plugin-CSRFDefender
AUTHOR
C<< <shibayu36 {at} gmail.com> >>
LICENCE AND COPYRIGHT
Copyright (c) 2011, Yuki Shibazaki <shibayu36 {at} gmail.com>
. All rights reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.