【安全】CSRF与XSS

CSRF和XSS概念

CSRF:跨站请求伪造( cross site request forgery):盗用用户在某网站的身份,以用户名义向某网站发起恶意请求。原理见下图:
在这里插入图片描述

上图中的恶意站点B,有时候可能其实是一个正常的网站。这时候通常会跟XSS一起打一套组合拳进行攻击。

XSS: 跨站脚本攻击(Cross Site Scripting):向某网站植入恶意代码,当用户访问该网站时,恶意代码就会被执行。

例如上图中,B站点其实是一个正常的论坛网站,而黑客把上图中请求4的javascript代码用script标签包起来写进帖子回复框里面并提交,然后用户在登录A后再访问B的页面看到这条回复时,都会向A发送这条请求,因为页面上已经被植入类似下面这段攻击代码:

<div>
xxx帖子回复列表:
<p>评论xxx</p>
<p>评论xxx<script>$.get("http://www.xx.xx/transfer?amount=all&to=张三", function(res) {} )</script></p>
<p>评论xxx</p>
<p>评论xxx</p>
</div>

以上就是B站点存在XSS漏洞,然后被黑客利用完成了一次恶意代码植入,即XSS攻击。

XSS分类
XSS分为:持久型攻击和非持久型攻击。
像上文举例的XSS攻击就属于持久型,因为恶意代码被写进回复框提交,恶意代码就会被存储到B站点的数据库中,往后每次打开有这条回复的页面都能进行攻击,也有叫法是存储型。
而非持久型XXS(有的叫反射型)攻击是指一次性的代码植入完成仅一次攻击。这种攻击通常通过用户点击某个链接完成。如上述的B站点有个页面http://web.b.com/home?userName=A,userName参数将用于页面展示,这时黑客就可以伪造一个B的链接给用户并诱使用户点击:http://web.b.com/home?userName= 就会被插入到页面中。
这种攻击是一次性的,用户关闭这个页面,页面上植入的代码就没了,要重新点击链接才能再次植入恶意代码到页面中。

防范手段

CSRF防守

1、用token代替session和cookie,token可以存在sessionStorage中;
2、后端设置cookie为HttpOnly
3、后端验证请求来源于自家网站的前端域名后才处理请求
4、尽量用post请求

XSS防守
1、读取url参数时要注意检查‘<’,‘>’,‘script’等关键字符串
2、对输入框,表单提交等输入内容要做转译或过滤
3、后端从前端接收到的内容也要进行关键字符检查

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值