• 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函数单引号的问题

  • 相关阅读:
    使用json-lib进行Java和JSON之间的转换
    ajax+json+java
    了解Json
    Ehcache RIM
    利用FreeMarker静态化网页
    Timer和TimerTask
    windows下memcache安装
    mac下安装YII
    php static 和self区别
    YII behaviors使用
  • 原文地址:https://www.cnblogs.com/hoewang/p/10257274.html
Copyright © 2020-2023  润新知