TLDR;我想在替换邪恶数据时启用xss_clean()的数据库记录。
我想在Security.php中启用xss_clean()函数的数据库日志记录,基本上我想要做的是知道我正在成功输入xss_clean()的输入是否被识别为其中包含恶意数据被过滤掉了。
基本上是这样的:
$str = '<script>alert();</script>';
$str = xss_clean($str);
理想情况下,我会发生什么:
据我所知,在Security.php文件中,没有什么可以解决这个问题,或者可以通过钩子等方式来解决这个问题。我当然可能会弄错。
由于没有记录在Security.php中进行了多少替换 - 我是否被迫扩展Security.php,复制粘贴原始函数中的当前代码并更改它以支持此功能?或者是否有一个更清洁,更安全的解决方案,以便将来更新CodeIgniter(尤其是被篡改/扩展的文件)?
答案 0 :(得分:1)
您需要扩展Security类,但如果您只需要输入/输出的日志,则无需复制和粘贴任何代码。下面的内容将允许您这样做:
Class My_Security extends CI_Security {
public function xss_clean($str, $is_image = FALSE) {
// Do whatever you need here with the input ... ($str, $is_image)
$str = parent::xss_clean($str, $is_image);
// Do whatever you need here with the output ... ($str)
return $str;
}
}
这样,你只是包装现有的函数并搞乱输入/输出。如果您担心对基础方法的更改,可以使用PHP函数get_args透明地传递参数对象,从而更加向前兼容。