CSRF攻击+XSS攻击

什么是XSS攻击?如何防止XSS攻击?

1.XSS攻击
XSS(Cross-Site Scripting)—跨站脚本攻击,简称XSS,是一种代码注入攻击,攻击者通过在目标网址注入恶意脚本,使之在用户的的浏览器上运行。利用这些恶意脚本,攻击者获取用户敏感信息如Cookie、SessionID等,进而危害数据安全。
XSS的本质:恶意代码未经过滤,与网站正常的代码混在一起;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。
2. 如何防止?
由于问题的源头是js代码的注入,那么我们便想办法不让js生效
方式1:使用转义字符
即需要注意两头的防范:
1)输入
在提交表单时,前端最好将文本内容转成html实体编码,也就是过滤掉

方式2:CSP建立白名单
建立白名单,即是明确告诉浏览器哪些外部资源可以加载和执行。(我们只需要配置规则,如何拦截是由浏览器自己实现的)

通常可以通过两种方式来开启CSP:
1)设置HTTP Header中的Content-Security-Policy
2)设置meta标签的方式

什么是CSRF攻击?如何防范CSRF攻击?

1. CSRF攻击
csrf中文名称为跨站请求伪造,原理是攻击者诱导受害则进入第三方网站,在第三方网站中向被攻击网站发送跨站请求。
几种常见攻击类型
1)GET类型的CSRF利用非常简单,只需要一个HTTP请求,一般会这样利用

CSRF攻击+XSS攻击

在受害者访问这个img页面之后,浏览器会自动向http://bank.example/withdraw?amount=10000&for=hacker发送一次http请求,bank.example就会收到包含受害者登录信息的一次跨域请求(因此此时受害访问了A网站,那么其是包含着认证信息的,攻击者利用这一特性,隐形中让受害者向上网站(B)发起HTTP请求,那么此时请求头自然也会包含了受害者的认证信息,那么攻击者的目的便达到!)
2. 如何防范

CSRF通常是第三方网站发起的,被攻击者的网站无法防止攻击的发生,只能通过增强自己的网站针对CSRF的防护能力来提升安全性
SCRF的两个特点:
SCRF(通常)发生在第三方域名
SCRF攻击者不能取到Cookie等信息,只是冒用。
针对以上两个特点,我们可以专门指定防护策略,如下:
阻止不明外域的访问:
同源检测:
Samesite Cookie
提交时要附加本域才能获取信息

CSRF Token
双重Cookie验证

CSRF Token

前面讲的CSRF的一特征是,攻击者无法直接窃取到用户的信息(Cookie、Header,网站内容等,仅仅是冒用Cookie中的信息)

而CSRF攻击之所以能成功,是因为服务器误把攻击者发送的请求当成了用户的请求,那么所有用户请求都会携带一个CSRF攻击者无法获取到的Token,服务器便可以通过校验请求是否携带正确的Token,来把正常的请求和攻击请求区分开来,也可以防范CSRF的攻击

上一篇:优雅地移除Laravel中的Cookie


下一篇:安全测试,CSRF, XXS