Additional XSS checks #1088

This commit is contained in:
Kijin Sung 2018-09-18 13:27:55 +09:00
parent e03ccbd7a9
commit 19331e6746
2 changed files with 12 additions and 11 deletions

View file

@ -1407,20 +1407,17 @@ class Context
}
elseif($_val = trim($_val))
{
if(in_array($key, array('page', 'cpage')) || ends_with('srl', $key, false))
if(in_array($key, array('page', 'cpage')) || ends_with('srl', $key, false) && preg_match('/[^0-9,]/', $_val))
{
if(preg_match('/[^0-9,]/', $_val))
{
$_val = (int)$_val;
}
$_val = (int)$_val;
}
elseif(in_array($key, array('mid', 'search_keyword', 'xe_validator_id')))
elseif(in_array($key, array('mid', 'vid', 'search_target', 'search_keyword', 'xe_validator_id')) || count($_GET))
{
$_val = escape($_val, false);
}
elseif($key === 'vid')
{
$_val = urlencode($_val);
if(ends_with('url', $key, false))
{
$_val = strtr($_val, array('&' => '&'));
}
}
}
$result[escape($_key)] = $_val;

View file

@ -67,7 +67,11 @@ class UploadFileFilter
*/
protected static function _checkSVG($fp, $from, $to)
{
if (self::_matchStream('/<script|xlink:href\s*=\s*"(?!data:)/i', $fp, $from, $to))
if (self::_matchStream('/<script|<handler\b|xlink:href\s*=\s*"(?!data:)/i', $fp, $from, $to))
{
return false;
}
if (self::_matchStream('/\b(?:ev:(?:event|listener|observer)|on[a-z]+)\s*=/i', $fp, $from, $to))
{
return false;
}