CSRF(跨域请求伪造)和XSS(跨域脚本攻击)的概念和防范措施

CSRF(跨域请求伪造)

恶意网站以正常用户为媒介,通过模拟正常用户的操作,攻击其登录过的网站。

原理:

1. 正常用户登录后,获得正常站点的令牌,以cookie的形式保存。

2. 用户访问恶意站点,恶意站点通过某种形式去请求了正常网站,然后将用户的令牌传递到正常网站,完成攻击。

防御

cookie的sameSite

现在很多浏览器都支持禁止跨域携带cookie。需要设置cookie的sameSite为:

  • Strict:严格,所有跨站请求都不附带cookie,有时会导致用户体验不好
  • Lax:宽松,所有跨站的超链接、GET请求的表单、预加载连接时会发送cookie,其他情况不发送
  • None:无限制

这种方法非常简单,极其有效,但前提条件是:用户不能使用太旧的浏览器。

验证referer和Origin

页面中的二次请求都会附带referer或Origin请求头,向服务器表示该请求来自于哪个源或页面,服务器可以通过这个头进行验证。

但某些浏览器的referer是可以被用户禁止的,尽管这种情况极少

二次验证

当做出敏感操作时,进行二次验证

使用非cookie令牌

这种做法是要求每次请求需要在请求体或请求头中附带token

请求的时候:authorization: token

XSS(跨域脚本攻击)

存储型XSS

  1. 恶意用户提交了恶意内容到服务器

  2. 服务器没有识别,保存了恶意内容到数据库

  3. 正常用户访问服务器

  4. 服务器在不知情的情况下,给予了之前的恶意内容,让正常用户遭到攻击

比如提交了一段
或者获取cookie然后发送到自己的服务器

对于存储型的防御:进行过滤然后html编码 将’<’ 变为 ‘&lt’ ‘>’ 变为’&gt’

反射型

  1. 恶意用户分享了一个正常网站的链接,链接中的地址带有恶意内容
  2. 正常用户点击了该链接
  3. 服务器在不知情的情况,把链接的恶意内容读取了出来,放进了页面中,让正常用户遭到攻击

DOM型

  1. 恶意用户通过任何方式,向服务器中注入了一些dom元素,从而影响了服务器的dom结构
  2. 普通用户访问时,运行的是服务器的正常js代码
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值