]> git.ipfire.org Git - thirdparty/AWStats.git/commitdiff
Fix: Sanitize parameters
authoreldy <>
Sat, 24 Sep 2011 01:02:22 +0000 (01:02 +0000)
committereldy <>
Sat, 24 Sep 2011 01:02:22 +0000 (01:02 +0000)
wwwroot/cgi-bin/awredir.pl

index 24f68631531e902895adfedc049164e1b52af5a2..2487f7917032d4c94b4703f41fce23a417c69f97 100644 (file)
@@ -76,6 +76,27 @@ sub DecodeEncodedString {
        return $stringtodecode;
 }
 
+#------------------------------------------------------------------------------
+# Function:     Clean a string of HTML tags to avoid 'Cross Site Scripting attacks'
+#               and clean | char.
+# Parameters:   stringtoclean
+# Input:        None
+# Output:       None
+# Return:              cleanedstring
+#------------------------------------------------------------------------------
+sub CleanXSS {
+       my $stringtoclean = shift;
+
+       # To avoid html tags and javascript
+       $stringtoclean =~ s/</&lt;/g;
+       $stringtoclean =~ s/>/&gt;/g;
+       $stringtoclean =~ s/|//g;
+
+       # To avoid onload="
+       $stringtoclean =~ s/onload//g;
+       return $stringtoclean;
+}
+
 
 #-------------------------------------------------------
 # MAIN
@@ -127,6 +148,12 @@ elsif ($Url =~ /url=(.+)$/) { $Url=$1; }
 $Url = DecodeEncodedString($Url);
 $UrlParam=$Url;
 
+# Sanitize parameters
+$Tag=CleanXSS($Tag);
+$Key=CleanXSS($Key);
+$UrlParam=CleanXSS($UrlParam);
+
+
 if (! $UrlParam) {
         error("Error: Bad use of $PROG. To redirect an URL with $PROG, use the following syntax:<br><i>/cgi-bin/$PROG.pl?url=http://urltogo</i>");
 }