防止SQL注入和XSS攻击

hsu*_*suk 0 php xss sql-injection codeigniter

以下此功能是否能够阻止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;
}
Run Code Online (Sandbox Code Playgroud)

安全类是笨.

Amb*_*ber 6

你不应该试图像这样"强力"安全 - 在每一段数据上一个接一个地分层所有这些不同的过滤器/逃逸是愚蠢的,实际上可能使逃逸不能按预期工作.

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

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

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