[dj]csrf/xsrf跨域问题

你能回答两个常见问题吗?

  • 1.为什银行一直强调,不要胡乱点不明链接.
  • 2.前端说接口访问不了了. 你从服务端允许跨域后就可以正常post了.
//一看浏览器console:  

Access to XMLHttpRequest at 'http://127.0.0.1:8000/' from origin 'http://localhost:63344' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
test.html?_ijt=r4v9pnluh36cd56h5vno6hku60:20 Error: Network Error
    at createError (createError.js:17)
    at XMLHttpRequest.handleError (xhr.js:83)

浅谈CSRF攻击方式

一.CSRF是什么?

  CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。

二.CSRF可以做什么?

  你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

三.CSRF漏洞现状

  CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:NYTimes.com(纽约时报)、Metafilter(一个大型的BLOG网站),YouTube和百度HI......而现在,互联网上的许多站点仍对此毫无防备,以至于安全业界称CSRF为“沉睡的巨人”。

四.CSRF的原理

  下图简单阐述了CSRF攻击的思想:

  从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤:

  1.登录受信任网站A,并在本地生成Cookie。

  2.在不登出A的情况下,访问危险网站B。

  看到这里,你也许会说:“如果我不满足以上两个条件中的一个,我就不会受到CSRF的攻击”。是的,确实如此,但你不能保证以下情况不会发生:

  1.你不能保证你登录了一个网站后,不再打开一个tab页面并访问另外的网站。

  2.你不能保证你关闭浏览器了后,你本地的Cookie立刻过期,你上次的会话已经结束。(事实上,关闭浏览器不能结束一个会话,但大多数人都会错误的认为关闭浏览器就等于退出登录/结束会话了......)

  3.上图中所谓的攻击网站,可能是一个存在其他漏洞的可信任的经常被人访问的网站。

认证凭据不要泄漏

如何获取认证凭据的? cookie/token

用户登陆提供user pass, 后端验证通过颁发一个字符串, 以后每次发request都鞋带上.

cookie有什么特点?

response的cookie,浏览器下次请求会自动被携带.是浏览器默认行为.

cookie泄漏了会有什么危害?

具备了你的身份的任何操作权限.

cookie泄漏了怎么补救?

对于cookie, 服务端db里去失效.
对于jwt token, 只能等,或者reload server. 尽量把token过期时间缩短(refresh token和用户凭据token)

登陆状态,不要被人利用.

为什么不要点不明链接?

那个链接可能就是你操作银行的链接. 不过参数是伪造的.

服务端如何规避点不明链接的风险?

token机制. 你来获取转账表单,顺带给你一个token,构建转账参数+token一并提交.

所以这里说的csrf token核心是,黑客假冒你的身份, 给你胡贴了一些提交参数.让你受损害.

猜你喜欢

转载自www.cnblogs.com/iiiiiher/p/12354260.html