防止SQL注入和XSS攻击

时间:2013-02-27 09:12:42

标签: php codeigniter xss sql-injection

以下此功能是否可以阻止 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。

1 个答案:

答案 0 :(得分:6)

你不应该试图像这样“强力”安全 - 在每一段数据上一个接一个地分层所有这些不同的过滤器/转义是愚蠢的,并且可能实际上使转义按计划工作。

这是因为为一种转义添加的字符种类可能被另一种转移。你也可能最终过度逃避。

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

  • 在将值放入SQL查询之前,请通过mysqli_real_escape_string()运行它们(或者更好的是,通过MySQLi / PDO使用预准备语句)。
  • 在将值回显给HTML响应之前,请通过HTML转义和/或XSS清理来运行它们。