作家
登录

AJAX请求真的不安全么?谈谈Web安全与AJAX的关系

作者: 来源: 2018-01-05 16:20:57 阅读 我要评论

3. 在不登出A的情况下,拜访危险网站B

一般在(4)恶意网站(B)的进击手段如下(必须是指向A的地址,不然无法带上cookie):

  1. // 1.譬如在网站内的图片资本中潜入恶意的转账操作 
  2. <img src=http://www.bank.example/transfer?toBankId=hello&amount=1000000 width='0' height='0'
  3.  
  4. // 2.构建恶意的隐蔽表单,并经由过程脚本提交恶意请求 
  5. <iframe style="display: none;" name="csrf-frame"></iframe> 
  6. <form method='POST' action='http://www.bank.example/transfer' target="csrf-frame" id="csrf-form"
  7.   <input type='hidden' name='toBankId' value=http://developer.51cto.com/art/201801/'hello'
  8.   <input type='hidden' name='amount' value=http://developer.51cto.com/art/201801/'1000000'
  9.   <input type='submit' value=http://developer.51cto.com/art/201801/'submit'
  10. </form> 
  11. <script>document.getElementById("csrf-form").submit()</script> 

并且,大年夜头到尾,进击网站都没有获取到过 cookie,都是经由过程浏览器借居实现(应用Web的cookie隐式身份验证机制),所以HttpOnly并不会影响这个进击

最后说下,几种常见的CSRF防御手段:

1. 验证HTTP Referer字段(异常简单,然则鉴于客户端并弗成信赖,所以并不是很安然)

XSS进击及防御


  • (防止CSRF,检查Referer字段简单直接,然则其完全依附浏览器发送精确的Referer字段。
    固然http协定对此字段的内容有明白的规定,但并无法包管来访的浏览器的具体实现,

    这是一个跨域共享筹划,大年夜致流程就是:(仅以复杂请求的预揭穿例-这一部分请求提前控制CORS相干常识)


    亦无法包管浏览器没有安然漏洞竽暌拱响到此字段。并且也存在进击者进击某些浏览器,修改其Referer字段的可能。)

    2. 在请求地址中添加token并验证
    (譬如post中,以参数的情势参加一个随机产生的token)

    CSRF与AJAX的关系

    在接收到上岸请求后,办事端的实际履行代码时是:

    上文中,我们看到CSRF的前提是cookie验证用户身份,那么它与AJAX的关系大年夜么?

    我们先分析AJAX中带cookie验证的情况:

    1. AJAX受到浏览器的同源策略限制

    2. AJAX默认无法请求跨域的接口
    (当然后台可以设备`Access-Control-Allow-Origin: *`之类的许可所有的跨域请求)

    问题1:会对cookie认证造成影响么?



    3. AJAX请求无法携带跨域cookie
    (如不雅强行开启withCredentials,必须办事端合营认证,无法用作进击)

    嗯哼...看到这,根本就可以认为CSRF与AJAX请求无缘了。。。

    譬如假设上图中第4部分的请求由AJAX提议,假设网站A已经许可了Access-Control-Allow-Origin: *,因为网站B与网站A是不合域名,所以存在跨域,根据同源策略,请求时根本就无法携带cookie,故而无法经由过程身份认证,进击掉败。。。
    就算强行开启withCredentials,携带跨域cookie,然则因为办事端并不会零丁设备网站B的跨域cookie(需设备Access-Control-Allow-Credentials: true,并且这时刻不许可设置Allow-Origin: *),所以肯定认证掉败

    所以说,结论是:CSRF与AJAX无关

    XSS简介

    既然CSRF与AJAX关系不大年夜,那么XSS应当会与AJAX有很大年夜关系吧?(要不然为什么一向说AJAX请求不安然,对吧。)。那么请持续看下去(本文中只限JS范畴)

    XSS(cross-site scripting),看起来简写竽暌功该是css更合适。。。然则为了和层叠式样式表区分,就用XSS简写表示


      推荐阅读

      徐晓兰:智能将成为新的生产要素

    【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? 人工智能正在加快迈人道能进级、应用深化的2.0成长新阶段,比出生60余年以来的任何时刻都加倍接近于仁攀类智能>>>详细阅读


    本文标题:AJAX请求真的不安全么?谈谈Web安全与AJAX的关系

    地址:http://www.17bianji.com/lsqh/40290.html

  • 关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)