美文网首页
跨站攻击与csrf验证

跨站攻击与csrf验证

作者: 胡乱唱歌ing | 来源:发表于2019-02-15 11:12 被阅读0次

    跨站攻击

    上次分析了sql注入,XSS攻击,这次说说也是web常见的跨站攻击。
    概述:跨站攻击是指通过第三方网站来对目标服务器发起的攻击。
    场景:我想盗取A网站的所有用户资料
    前提:假如A网站存在跨站攻击漏洞,假如获取用户列表的地址是/member/get-list
    思路:那么我只需拿到A网站后台管理员的权限即可,即通过比如短信,邮件,广告等等各种方法诱惑A网站的管理员访问我们已经设定好的钓鱼网站,只要他访问了我们的网站,恰好他也登陆到了A网站的后台,那么在他打开我们的网页时,我们的网页向A网站的/member/get-list地址发送请求,那么就能获取到A网站的所有用户资料啦,如果这样你还觉得没什么危险,那么删除用户呢? 修改订单呢?修改充值记录呢?转账?
    跨站攻击代码示例:通过www.test.com发起对www.orders.com攻击
    目标地址:http://www.orders.com/member/index
    攻击地址:http://www.test.com/index.html
    index.html

     <iframe width="1000px" height="1000px" src="http://www.orders.com/member/get-list?start=0&length=100"></iframe>
    

    效果:


    image.png image.png

    csrf验证

    概述:csrf可以解决上面提到的跨站攻击问题。它的原理大致这样:A网站不再相信任何发送过来的请求,所以的请求都要经过签名验证,而这个签名必须由A网站动态生成。即所有的form表单,POST的请求,必须先验证签名,因为GET请求不做数据修改,一般GET请求不做验证。后台生成的签名存入session同时传递给客户端,每次客户端发起请求都必须带上签名,接收请求则先验证。
    form表单提交加入csrf :在form表单加入

    <input type = "hidden" name="csrf_token" value="<?php echo $tokan?>" />
    

    ajax POST 提交也带上csrf_token 参数
    后台入口检验csrf_token 值即可
    csrf_token 是动态生成的,攻击者很难猜到。

    总结

    1.跨站攻击危害巨大,一不小心就中招
    2.提高网站安全性,能POST就不要用GET
    3.不要相信任何的请求,请求必须验证
    4.不要点击任何网站的小广告,洁身自好拒绝浏览不良网站

    相关文章

      网友评论

          本文标题:跨站攻击与csrf验证

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