背景介绍
概念简介
CSRF XSS攻击是一种常见的安全攻击,它通过伪造用户输入,利用CSRF漏洞获取用户的敏感信息或者执行恶意操作。CSRF XSS攻击不仅会给用户带来损失,还会对互联网安全造成威胁。因此,防范CSRF XSS攻击已经成为了当前网络安全领域的重要任务
CSRF(Cross-Site Request Forgery)是指跨站脚本攻击,是一种常见的安全攻击手段。它通过伪造用户输入,利用CSRF漏洞获取用户的敏感信息或者执行恶意操作。CSRF XSS攻击是CSRF攻击的一种特殊形式,它通过XSS(跨站脚本)技术,利用CSRF漏洞获取用户的敏感信息或者执行恶意操作。
开始攻击
1. xss攻击
原理:恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。
最常见的就是在input中输入一段js代码,如图:
发现后台把js脚本当成了字符串来处理了
因为网站是用React开发的,React DOM 会在渲染的时候把内容(字符串)进行转义,所以字符串形式的标签是不会作为 HTML 标签进行处理的,所以输入script是不能执行的。攻击失败
2. csrf攻击
原理: 诱导用户打开黑客的网站,在黑客的网站中,利用用户登录状态发起跨站点请求。
首先,我们先自己建一个简单的网站,用express快速建站。希望诱导用户在登录状态时,窃取cookie凭证
index.html
通过img标签 发送cookie数据。发现打印cookie是空,因为自己的localhost和公司的网站域名不同。所以即是跨域也跨站了。document.cookie是拿不到公司网站的cookie 。
如果我把domain改成和公司的一级域名一样呢。例如:公司的是doc.xxxx.com,我自己的改成hacker.xxxx.com。
果然:
在我的hacker.xxxx.com 中的js是可以取的公司网站的cookie的。原因是因为公司网站的cookie设置时,是前端自己设置的,httpOnly都是false,这样js是可以取到的。
如果公司自己的网站test.xxxx.com岂不是也拿不到cookie了吗?这样SSO就不能生效了。这时候就用到了cookie的SameSite属性了。