blob: e9799e75147e921fd47b6a255adc27673ccb540e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
LWPx::ParanoidAgent is a class subclassing LWP::UserAgent, but
paranoid against attackers. It's to be used when you're fetching
a remote resource on behalf of a possibly malicious user.
This class can do whatever LWP::UserAgent can (callbacks, uploads
from files, etc), except proxy support is explicitly removed, because
in that case you should do your paranoia at your proxy.
Also, the schemes are limited to http and https, which are mapped to
LWPx::Protocol::http_paranoid and LWPx::Protocol::https_paranoid,
respectively, which are forked versions of the same ones without
the "_paranoid". Subclassing them didn't look possible, as they were
essentially just one huge function.
This class protects you from connecting to internal IP ranges
(unless you whitelist them), hostnames/IPs that you blacklist, remote
webserver tarpitting your process (the timeout parameter is changed to
be a global timeout over the entire process), and all combinations of
redirects and DNS tricks to otherwise tarpit and/or connect to internal
resources.
WWW: http://search.cpan.org/dist/LWPx-ParanoidAgent/
|