Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 防止XSS攻击并正确编码字符_Php_Mysql_Character Encoding_Xss - Fatal编程技术网

Php 防止XSS攻击并正确编码字符

Php 防止XSS攻击并正确编码字符,php,mysql,character-encoding,xss,Php,Mysql,Character Encoding,Xss,我有防止sql注入的功能 是一个很好的功能,真正的功能是防止攻击但是 开始显示字符的问题 这个词是“金融控制” 在var_dump中,我看到字符串(31)“财务控制和部门控制” 我正在尝试一些方法,但失败了2天,请帮助我 function Anti_Sql_Injection($string){ if(ini_get('magic_quotes_gpc') == 'off'){ $string = addslashes($string);

我有防止sql注入的功能 是一个很好的功能,真正的功能是防止攻击但是 开始显示字符的问题

这个词是“金融控制” 在var_dump中,我看到字符串(31)“财务控制和部门控制”

我正在尝试一些方法,但失败了2天,请帮助我

function Anti_Sql_Injection($string){ 
        if(ini_get('magic_quotes_gpc') == 'off'){ 
           $string = addslashes($string); 
        }  

        $string = htmlentities($string, ENT_QUOTES);
        $codes = array("script","java","applet","iframe","meta","object","html","CONCAT","CHAR","FLOOR","RAND", "<", ">", ";", "'","%");

        $string = str_replace($codes,"",$string);

        return $string; 
}
函数反Sql注入($string){ 如果(ini_get('magic_quotes_gpc')=='off'){ $string=addslashes($string); } $string=htmlentities($string,entu引号); $codes=数组(“脚本”、“java”、“小程序”、“iframe”、“meta”、“object”、“html”、“CONCAT”、“CHAR”、“FLOOR”、“RAND”、“、”、“;”、“%”、“%”); $string=str_replace($code,“,$string); 返回$string; } 试试这个

function Anti_Sql_Injection($string){
    if(ini_get('magic_quotes_gpc') == 'off') {
        $string = addslashes($string);
    }

    $string = htmlspecialchars($string, ENT_QUOTES,"UTF-8");
    $codes = array("script","java","applet","iframe","meta","object","html","CONCAT","CHAR","FLOOR","RAND", "<", ">", ";", "'","%");

    $string = str_replace($codes,"",$string);

    return $string;
}
函数反Sql注入($string){ 如果(ini_get('magic_quotes_gpc')=='off'){ $string=addslashes($string); } $string=htmlspecialchars($string,ENT_引号,“UTF-8”); $codes=数组(“脚本”、“java”、“小程序”、“iframe”、“meta”、“object”、“html”、“CONCAT”、“CHAR”、“FLOOR”、“RAND”、“、”、“;”、“%”、“%”); $string=str_replace($code,“,$string); 返回$string; }
我还想告诉你。它通过准备好的语句内置了SQL注入。查看教程,从PDO开始。我知道它有点旧,但仍然有效,并且解释得很好。

为什么要使用名为
反Sql\u Injection()的函数来防止XSS攻击?要停止SQL注入,请执行相应的、单独的操作

不要试图一箭双雕。你最终改变了数据

XSS预防变得容易了
  • 您使用的是提供上下文敏感XSS转义的框架吗?
    • 是的:那就使用这个功能吧。将
      自动转义
      块优先于手动转义过滤器(例如使用)
    • 否:是否需要允许用户提供一些HTML?
      • 是的:
      • 否:
        htmlspecialchars($string,ENT_引号| ENT_HTML5,'UTF-8')
SQL注入预防变得简单
使用事先准备好的陈述。像这样的库(包装PDO)可以减少迁移的痛苦。

@BrunoPinna我很高兴,我很高兴能帮上忙。祝你的项目好运。你确定添加“UTF-8”有什么不同吗?如果是的话,你能演示一下吗?确保没有任何东西能绕过你的过滤器。击败XSS的推荐方法是,而不是剥离某些单词。还可以使用块模式,或者更好地使用内容安全策略。谢谢您的提示=)