zoukankan      html  css  js  c++  java
  • tp3.2.3中的xss攻击基本防护

    虽然说现在的web开发框架都是挺成熟的框架,在性能、安全等方面都有比较好的表现,但问题往往出现在业务逻辑上,如上周我再公司发现的一个跨站脚本攻击,(通常公司是这么过滤的,max(0,$_GET[‘a’])、strip_tags($_GET[‘a’]),然而代码量大的话,就容易出现忽略的地方)

    如下面一段代码:


    (function(){

    var a = {:$_GET['b']};

    //....

    })()

    如果把接收的参数写成:””;alert(document.cookie);//,那么攻击就成功了,

    有了这个漏洞之后如何利用,首先构造一个获取cookie然后跳转到指定服务器进行进行信息收集,然后再跳转回一个不易被怀疑的页面(但如果要做的事比较多,脚本比较多怎么办,

    像当年新浪的xss一样,引入js脚本)。有没有更高级的做法,答案是有的,用jsonp就不用跳转了,这个我没有试验,另外还有一种方式,就是把链接生成二维码,

    通过扫描二维码的方式也不易被发现,所以大家没事不要随便扫二维码,不要以为在微信中就认为链接不可见,get到链接的方法就是分享页面给自己,然后通过邮件转发就能看到链接.

    优缺点:

    优点:

    效率高

    缺点:

    不便于维护,缺乏安全性

    解决方案:

    使用全局过滤

    要求使用统一的函数进行参数接收,就算不用I函数也可以自定义一个函数

    添加验证码等操作

    如何减少攻击带来的损失:

    在一个web项目里,由于多人合作,不一定能每一个细节都做的很好,所以

    cookie启用httponly属性,thinkphp里似乎要3.2.3版本才有,没有也没关系,可以自己加上,在新版本的thinkphp找到cookie函数,跟旧版本的对比下就知道了,另外

    需要在配置里配置’COOKIE_HTTPONLY’ => true,这个可以在大部分浏览器保证cookie不被偷走

    bug终结者

    你以为这样就完了吗,往下看:

    thinkphp(3.2.3core版测试,默认过滤’DEFAULT_FILTER’=>’htmlspecialchars’,)里I函数也无能为力的地方就是

    不过滤单引号


    (function(){

    var a = '{:$_GET["b"]}';

    var b = '{:I("b")}';//变量输入 ';alert(document.cookie);//

    console.log(a);

    console.log(b);

    })()

    这种情况I函数也帮不了你,最后,使用统一的过滤函数,并且注意I函数单引号的问题

  • 相关阅读:
    WordPress fonts.useso.com加载慢解决办法
    ecshop 需要修改权限的文件夹及文件
    手机前端框架UI库(Frozen UI、WeUI、SUI Mobile)
    apache2配置rewrite_module
    wordpress htaccess伪静态设置
    linux whereis 快速查找命令
    Linux下的PS和grep的使用
    [转]group by 后使用 rollup 子句总结
    Maven配置国内镜像仓库
    清除电脑垃圾.bat
  • 原文地址:https://www.cnblogs.com/hoewang/p/10257274.html
Copyright © 2011-2022 走看看