X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=include%2Finit.php;h=047f18771081a8fc8e6f630cb8026999f52e4e7f;hb=eceb3fe56e7ef548f83797639e9d6d993254695b;hp=9f17708eb87466feed7f59a8d9bb792a6d78f988;hpb=8f557b942c5a3fb6663c349f4cc7d4a1c8aa4504;p=squirrelmail.git diff --git a/include/init.php b/include/init.php index 9f17708e..047f1877 100644 --- a/include/init.php +++ b/include/init.php @@ -263,10 +263,21 @@ if (function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc()) { } -/* strip any tags added to the url from PHP_SELF. -This fixes hand crafted url XXS expoits for any - page that uses PHP_SELF as the FORM action */ -$_SERVER['PHP_SELF'] = strip_tags($_SERVER['PHP_SELF']); +/** + * Strip any tags added to the url from PHP_SELF. + * This fixes hand crafted url XXS expoits for any + * page that uses PHP_SELF as the FORM action + * Update: strip_tags() won't catch something like + * src/right_main.php?sort=0&startMessage=1&mailbox=INBOX&xxx="> + * or + * contrib/decrypt_headers.php/%22%20onmouseover=%22alert(%27hello%20world%27)%22%3E + * because it doesn't bother with broken tags. + * htmlspecialchars() is the preferred method. + * QUERY_STRING also needs the same treatment since it is + * used in php_self(). + */ +$_SERVER['PHP_SELF'] = htmlspecialchars($_SERVER['PHP_SELF']); +$_SERVER['QUERY_STRING'] = htmlspecialchars($_SERVER['QUERY_STRING']); $PHP_SELF = php_self(); @@ -791,6 +802,7 @@ function checkForJavascript($reset = FALSE) { if ( !$reset && sqGetGlobalVar('javascript_on', $javascript_on, SQ_SESSION) ) return $javascript_on; + //FIXME: this isn't used anywhere else in this function; can we remove it? why is it here? $user_is_logged_in = FALSE; if ( $reset || !isset($javascript_setting) ) $javascript_setting = getPref($data_dir, $username, 'javascript_setting', SMPREF_JS_AUTODETECT);