App-HTTP_Proxy_IMP
view release on metacpan or search on metacpan
lib/App/HTTP_Proxy_IMP/IMP/CSRFprotect.pm view on Meta::CPAN
use fields (
'target', # target domain from request header
'origin', # domain from origin/referer request header
);
use Net::IMP qw(:DEFAULT :log);
use Net::IMP::Debug;
use Net::IMP::HTTP;
sub RTYPES { return (
IMP_REPLACE, # remove Cookie/Authorization header
IMP_LOG, # log if we removed something
IMP_DENY, # bad requests/responses
IMP_PASS,
)}
sub new_analyzer {
my ($class,%args) = @_;
my $self = $class->SUPER::new_analyzer(%args);
$self->run_callback(
# we will not modify response, but need to look at the response
lib/App/HTTP_Proxy_IMP/IMP/CSRFprotect.pm view on Meta::CPAN
if ( _delegation_exists($target,$origin)) {
debug("trusted request from $origin to $target (earlier delegation)");
return
}
}
# remove cookies, because there is no cross-domain trust
# we should remove authorization header too, but then access to the
# protected site will probably not be available at all (see BUGS section)
my @del;
push @del,$1 while ( $hdr =~s{^(Cookie|Cookie2):[ \t]*(.*(?:\n[ \t].*)*)\n}{}im );
if (@del) {
$self->run_callback([
IMP_LOG,0,0,0,IMP_LOG_INFO,
"removed cross-origin session credentials (@del) for request @origin -> @target"
]);
# return changed header
return $hdr;
}
# nothing changed
lib/App/HTTP_Proxy_IMP/IMP/CSRFprotect.pm view on Meta::CPAN
1;
__END__
=head1 NAME
App::HTTP_Proxy_IMP::IMP::CSRFprotect - IMP plugin against CSRF attacks
=head1 DESCRIPTION
This plugin attempts to block malicious cross-site requests (CSRF), by removing
session credentials (Cookie, Cookie2 and Authorization header) from the request,
if the origin of the request is not known or not trusted.
The origin is determined by checking the Origin or the Referer HTTP-header of
the request.
An origin O is considered trusted to issue a cross-site request to target T, if
=over 4
=item *
( run in 0.272 second using v1.01-cache-2.11-cpan-e9199f4ba4c )