HTML-escape error messages (OVE-20160505-0012)

The instance in cgierror() is a potential cross-site scripting attack,
because an attacker could conceivably cause some module to raise an
exception that includes attacker-supplied HTML in its message, for
example via a crafted filename. (OVE-20160505-0012)

The instances in preprocess() is just correctness. It is not a
cross-site scripting attack, because an attacker could equally well
write the desired HTML themselves; the sanitize hook is what
protects us from cross-site scripting here.
master
Simon McVittie 2016-05-04 08:46:02 +01:00
parent 355ba85137
commit 32ef584dc5
2 changed files with 5 additions and 0 deletions

View File

@ -1647,6 +1647,8 @@ sub preprocess ($$$;$$) {
if ($@) {
my $error=$@;
chomp $error;
eval q{use HTML::Entities};
$error = encode_entities($error);
$ret="[[!$command <span class=\"error\">".
gettext("Error").": $error"."</span>]]";
}

View File

@ -488,6 +488,9 @@ sub cgi (;$$) {
sub cgierror ($) {
my $message=shift;
eval q{use HTML::Entities};
$message = encode_entities($message);
print "Content-type: text/html\n\n";
print cgitemplate(undef, gettext("Error"),
"<p class=\"error\">".gettext("Error").": $message</p>");