CGI-Application-Plugin-RateLimit

From Free Software Directory
 
Jump to: navigation, search


[edit]

Cgi-application-plugin-ratelimit

https://metacpan.org/release/CGI-Application-Plugin-RateLimit
Perl module for limiting the runmode call rate per user

CGI::Application::Plugin::RateLimit provides protection against a user calling a runmode too frequently. A typical use-case might be a contact form that sends email. You'd like to allow your users to send you messages, but thousands of messages from a single user would be a problem.

This module works by maintaining a database of hits to protected runmodes. It then checks this database to determine if a new hit should be allowed based on past activity by the user. The user's identity is, by default, tied to login (via REMOTE_USER) or IP address (via REMOTE_IP) if login info is not available. You may provide your own identity function via the identity_callback() method.

To use this module you must create a table in your database with the following schema (using MySQL-syntax, although other DBs may work as well with minor alterations):

CREATE TABLE rate_limit_hits ( user_id VARCHAR(255) NOT NULL, action VARCHAR(255) NOT NULL, timestamp UNSIGNED INTEGER NOT NULL, INDEX (user_id, action, timestamp) );

You may feel free to vary the storage-type and size of user_id and action to match your usage. For example, if your identity_callback() always returns an integer you could make user_id an integer column.

This table should be periodically cleared of old data. Anything older than the maximum timeframe being used can be safely deleted.

IMPORTANT NOTE: The protection offered by this module is not perfect. Identifying a user on the internet is very hard and a sophisticated attacker can work around these checks, by switching IPs or automating login creation.



Download




Categories





Licensing

License

Verified by

Verified on

Notes

License

Other

Verified by

Debian

Verified on

20 March 2013

Notes

License: Artistic or GPL-1+

Artistic:

 This program is free software; you can redistribute it and/or
 modify it under the terms of the Artistic License, which comes
 with Perl.
 On Debian systems, the complete text of the Artistic License can
 be found in `/usr/share/common-licenses/Artistic'.

GPL-1+:

 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License as
 published by the Free Software Foundation; either version 1, or
 (at your option) any later version.
 On Debian systems, the complete text of version 1 of the GNU
 General Public License can be found in `/usr/share/common-
licenses/GPL-1'.




Leaders and contributors

Contact(s)Role
Sam Tregar contact


Resources and communication

AudienceResource typeURI
Debian (Ref) (R)https://tracker.debian.org/pkg/libcgi-application-plugin-ratelimit-perl
Perl (Ref)https://metacpan.org/release/CGI-Application-Plugin-RateLimit


Software prerequisites




Entry











"contact" is not in the list (Maintainer, Contributor, Developer, Sponsor, Unknown) of allowed values for the "Role" property.


"Perl (Ref)" is not in the list (General, Help, Bug Tracking, Support, Developer) of allowed values for the "Resource audience" property.


"Debian (Ref) (R)" is not in the list (General, Help, Bug Tracking, Support, Developer) of allowed values for the "Resource audience" property.






Date 2013-03-20
Source Debian import
Source link http://packages.debian.org/sid/libcgi-application-plugin-ratelimit-perl

[[Category:]]



Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the page “GNU Free Documentation License”.

The copyright and license notices on this page only apply to the text on this page. Any software or copyright-licenses or other similar notices described in this text has its own copyright notice and license, which can usually be found in the distribution or license text itself.