1.什么叫做xss攻击

xss攻击:跨站脚本攻击(攻击者网web里面插入恶意的script代码,用户浏览的时候script代码就会执行,会恶意攻击用户)
如果我们不放在xss攻击
攻击者在商品名称新增输入框,输入如下的script代码
tp5之xss攻击
其他用户在进入商品列表展示页面的时候,就会看见这个弹窗

妨碍用户访问网页

2.防范xss攻击

(1)使用htmlspecialchars函数

将用户输入的特殊字符<>,转化为html实体字符
在application\config.php中设置默认全局过滤方法
tp5之xss攻击
尝试着攻击一下插入script代码,此时看你的内容展示页面
内容类似于这个样子,但是它没有弹窗tp5之xss攻击
存入数据表的话,script标签的尖括号会转为实体字符

(2)使用htmlpurifier防范富文本编辑器的xss攻击

在富文本编辑器里输入html代码是正常的,所以使用htmlspecialchars函数是不起作用的
用户在编辑区内写入

  • 如果是下载的htmlpurifier插件包将其中的library目录移动到项目中public/plugins目录[也可以利用composer一步加载到位]

  • 在application/common.php中定义remove_xss函数

    function remove_xss($string){
    //composer安装的,不需要此步骤。相对index.php入口文件,引入 HTMLPurifier.auto.php核心文件
    require_once ‘./plugins/htmlpurifier/HTMLPurifier.auto.php’;
    // 生成配置对象
    $cfg = HTMLPurifier_Config::createDefault();
    // 以下就是配置:
    $cfg -> set(‘Core.Encoding’, ‘UTF-8’);
    // 设置允许使用的HTML标签
    $cfg -> set(‘HTML.Allowed’,‘div,b,strong,i,em,a[href|title],ul,ol,li,br,p[style],span[style],img[width|height|alt|src]’);
    // 设置允许出现的CSS样式属性
    $cfg -> set(‘CSS.AllowedProperties’, ‘font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align’);
    // 设置a标签上是否允许使用target="_blank"
    $cfg -> set(‘HTML.TargetBlank’, TRUE);
    // 使用配置生成过滤用的对象
    obj=newHTMLPurifier(obj = new HTMLPurifier(cfg);
    // 过滤字符串
    return obj&gt;purify(obj -&gt; purify(string);
    }
    }
    测试:
    然后随便在一个模块的方法里写个字符串调用一下,dump出来
    打印出来的结果是一个字符串

相关文章:

  • 2021-06-04
猜你喜欢
  • 2022-02-13
  • 2022-12-23
  • 2022-02-20
  • 2021-06-27
  • 2021-08-19
相关资源
相似解决方案