美文网首页
Web安全之XSS

Web安全之XSS

作者: sarah_wqq | 来源:发表于2019-01-22 20:36 被阅读0次

    XSS :cross site script 跨站脚本攻击
    比如在input框中输入script代码

    <script>alert('hehehe')</script>
    

    1.危害

    获取页面数据、获取Cookie、劫持前端逻辑、发送请求、偷取用户资料...

    2.攻击方法

    url中注入脚本
    查询框注入脚本
    存储型注入,通过form表带提交到数据库中

    3.要防护的地方

    动态生成的HTML节点、HTML属性(如src),依赖与用户输入的JS代码,富文本等


    富文本例子.png

    4.防御方法

    1)对HTML内容和属性实体进行转义escape

     < --------> &lt;
     > --------> &gt;
     " --------> &quto; 或&#34;
     '  --------> 或&#39;
    

    &符号可转可不转,空格一般不做转义,但是要求html中属性值必须加上引号

    2)对JS做转义

    加 \ 或者转为JSON

    str = str.replace(/\\/g, '\\\\');
    str = str.replace(/"/g, '\\"');
    str = str.replace(/'/g, "\\'");
    //or
    str = JSON.stringify(str);
    

    3)对于富文本,黑名单方法过滤指定标签(如<script>),或白名单方法只支持指定标签

    html = html.replace(/<\s*\/?script\s*>/g, '');
    

    由于XSS攻击方式变种非常多,所以推荐白名单的方式防御,可用cheerio库

    4)浏览器内置防御机制

    防御效果有限,只对url参数中的script有效

    5.CSP

    CSP: Content security policy 内容安全策略
    用于指定哪些内容可执行,通过CSP所约束的的规责指定可信的内容来源。

    在HTTP头中加入属性Content-Security-Policy,并写入常用的指令:

    • default-src 默认策略,可以应用于js文件/图片/css/ajax请求等所有访问
    • script-src 定义js文件的过滤策略
    • style-src 定义css文件的过滤策略
    • object-src 定义页面插件的过滤策略,如 <object>, <embed> 或者<applet>等元素
    • 还有img-src、connect-src、font-src、media-src、frame-src等
    • sandbox 沙盒模式,会阻止页面弹窗/js执行等

    并在服务器端进行相应的配置

    • Apache,在VirtualHost的httpd.conf文件或者.htaccess文件中加入以下代码
    Header set Content-Security-Policy "default-src 'self';"
    
    • Nginx,在 server {}对象块中添加如下代码
    add_header Content-Security-Policy "default-src 'self';";
    
    • IIS, 在web.config中添加

    6.PHP中的XSS防御

    1.strip_tags():移除所有html标签,只留下内容
    2.htmlspecialchars($content, ENT_NOQUOTES):对& < >等特殊字符做转义
    3.使用各种第三方库,如HTMLPurifier
    4.用php Document类解析Dom节点,根据白名单过滤
    5.CSP

    相关文章

      网友评论

          本文标题:Web安全之XSS

          本文链接:https://www.haomeiwen.com/subject/hzirjqtx.html