0

下面这个函数能防止XSS攻击sql注入吗?

require_once('security.class.php');
function secure_data($data) {
    $data = mysql_real_escape_string($data);
    $filtered_data = filter_var($data, FILTER_SANITIZE_STRING);
    $secure_class = new security_class();
    $clean_data = $secure_class->xss_clean($filtered_data);         
    return $clean_data;
}

安全类来自codeigniter 。

4

1 回答 1

6

您不应该像这样尝试“蛮力”安全性 - 在每条数据上一个接一个地分层所有这些不同的过滤器/转义是愚蠢的,实际上可能会使转义无法按预期工作。

这是因为为一种转义添加的字符类型可能会被另一种删除。你也可能会过度逃避。

相反,您应该使用特定于您实际尝试执行的转义函数:

  • 在将值放入 SQL 查询之前,先运行它们mysqli_real_escape_string()(或者更好的是,通过 MySQLi/PDO 使用准备好的语句)。
  • 在将值回显到 HTML 响应之前,请通过 HTML 转义和/或 XSS 清理运行它们。
  • 等等。
于 2013-02-27T09:19:01.950 回答