Merge remote-tracking branch 'ms/xss' into next
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 21 Aug 2013 15:40:44 +0000 (17:40 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 21 Aug 2013 15:40:44 +0000 (17:40 +0200)
config/cfgroot/header.pl
html/cgi-bin/logs.cgi/proxylog.dat

index a7f209d9cbaed7c7ef485b0f2cd74c2ad6978d21..9129c682c05f0d20be9798eee502fac7e61848fd 100644 (file)
@@ -12,6 +12,7 @@
 package Header;
 
 use CGI();
+use HTML::Entities();
 use Socket;
 use Time::Local;
 
@@ -305,16 +306,16 @@ sub IpInSubnet
     return (($ip >= $start) && ($ip <= $end));
 }
 
-sub cleanhtml
-{
+sub escape($) {
+       my $s = shift;
+       return HTML::Entities::encode_entities($s);
+}
+
+sub cleanhtml {
        my $outstring =$_[0];
        $outstring =~ tr/,/ / if not defined $_[1] or $_[1] ne 'y';
-       $outstring =~ s/&/&amp;/g;
-       $outstring =~ s/\'/&#039;/g;
-       $outstring =~ s/\"/&quot;/g; #" This is just a workaround for the syntax highlighter
-       $outstring =~ s/</&lt;/g;
-       $outstring =~ s/>/&gt;/g;
-       return $outstring;
+
+       return escape($outstring);
 }
 
 sub connectionstatus
index e529be061df78e9f4419e3ebddb6d1cf14cf3209..da86f8917394ceebf230ac4ddefab149a0d330da 100644 (file)
@@ -90,7 +90,7 @@ if ($ENV{'QUERY_STRING'} && $cgiparams{'ACTION'} ne $Lang::tr{'update'})
        $cgiparams{'MONTH'} = $temp[1];
        $cgiparams{'DAY'} = $temp[2];  
        $cgiparams{'SOURCE_IP'} = $temp[3];
-       $cgiparams{'USERNAME'} = $temp[4];
+       $cgiparams{'USERNAME'} = &Header::escape($temp[4]);
 }
 
 if (!($cgiparams{'MONTH'} =~ /^(0|1|2|3|4|5|6|7|8|9|10|11)$/) ||
@@ -383,6 +383,7 @@ print <<END
 END
 ;
 foreach my $so (sort keys %users) {
+       $so = &Header::escape($so);
        print "<option value='$so' $selected{'USERNAME'}{$so}>$so</option>\n"; }
 print <<END
        </select>