CSRF原理及防御

CSRF漏洞危害

  • 攻击者盗用了用户的身份后,以用户的名义发送恶意请求。
  • CSRF的恶意操作∶以用户名义发送邮件,发消息,盗取账号,购买商品,虚拟货币转账等等·造成的问题包括:个人隐私泄露以及财产安全问题。

CSRF漏洞防御

csrf跨站访问其他站点,是一个固定带cookie的数据包,那再添加其他验证字段,使每次访问的数据包不固定,那就能防御了

  • 验证Referer字段——如果Referer是其他网站的话,就有可能是CSRF攻击,则拒绝该请求
  • 添加Token验证——可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。
  • 二次验证——在转账等关键操作之前提供当前用户的密码或者验证码

CSRF和XSS的区别

XSS是把恶意代码插入到html页面中,当用户浏览页面时,插入的html代码会被执行
而CSRF时一种欺骗受害者提交恶意请求的攻击。代表受害者实行恶意操作

XSS针对客户端,CSRF针对服务端
XSS利用合法客户获取信息,CSRF伪造成合法客户发起请求

利用方式

让受害者点击伪造链接,伪造链接里的代码有跳转向指定网页,并携带上恶意参数

这里讲点不一样的
XSS构造的XMLHttpRequest请求CSRF的表单

在这里,XSS能否实现和CSRF一样的跳转修改功能?
答案是不能,因为一个同源策略

同源策略:

源即为url中的协议、域名、端口的组合
不同浏览器同源策略不一样

概述︰
同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。·同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。

受约束对象∶DOM、Cookie、第三方插件以及XMLHttpRequest都受到同源策略的约束

不受约束对象︰

  • 页面中的链接,重定向以及表单提交是不会受到同源策略限制的。
    *跨域资源的引入是可以的。但是js不能读写加载的内容。如嵌入到页面中的<script>,<img>,<link>,<iframe>等带src属性的标签。

非同源受到的限制∶
Cookie、LocalStorage和IndexDB无法读取。
DOM无法获得。
AJAX请求不能发送。
跨域

所以CSRF的表单不会被约束,而XSS用JS写的XMLHttpRequest会被约束,当然XSS可以不写这个叼请求

这里介绍一个跨域的方法

JSONP跨域

<script>的src不受同源策略约束实现跨域获取数据
只能用于GET,不能POST

  • 比如
    a.com/jsonp.html想得到b.com/main.js 中的数据,在a.com 的jsonp.html里创建一个回调函数xxx,动态添加<script>元素,向服务器发送请求,请求地址后面加上查询字符串,通过callback参数指定回调函数的名字。
    请求地址为http://b.com/main,js?callback=xx在main.js中调用这个回调函数xx,并且以JSON数据形式作为参数传递
var script = document.createElement("script");
script.src = "https: //api.douban.com/v2/book/search?q=javascript&count=1&callback=handleResponse";document.body.insertBefore(script,document.body.firstChild);

点赞!点赞!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值