xss_clean % 错误

作者: pascaadryan创建于 2023年12月1日更新于 2025年4月8日

我认为我发现了 xss_clean 函数的一个问题。我在此代码段(Security.php):

f (stripos($str, '%') !== false) { do { $oldstr = $str; $str = rawurldecode($str); $str = preg_replace_callback('#%(?:\s*[0-9a-f]){2,}#i', [$this, '_urldecodespaces'], $str); } while ($oldstr !== $str); unset($oldstr); }

我有一个输入文本,我通过 post 发送了以下字符串:60% acqua。如果您尝试使用 UTF8 编码,结果将是 60¬qua,因为空格被删除,而 utf8_encode 发现 %ac 并将其转换为 ¬。问题在于,当一个字符序列标识 ASCII 代码(例如:90% cars 将被转换为 90Êrs)时。

内容来源: bcit-ci/CodeIgniter