前面学习了 xss攻击的相关知识点,现在接着了解下 csrf攻击
什么是csrf攻击
csrf 全称跨站请求伪造(Cross-site request forgery),指的是攻击者携带网站cookie,冒充用户请求的攻击行为。
与 xss攻击 的区别
xss攻击主要指网站被攻击者利用漏洞恶意注入脚本并执行,是一种注入类攻击;csrf 描述的是攻击者携带cookie冒充用户的请求行为,它们属于两种不同维度上的分类。
可以预想的是,如果 xss攻击的执行脚本包含请求服务器的行为,其也会携带用户cookie达到冒充用户请求的行为,这时候也属于 csrf攻击,不过我们一般称这样的情况为 xsrf攻击。
经典的csrf攻击过程
1.用户C打开a网站,向服务器A发送请求进行登录2.登陆验证通过,服务器返回cookieA3.cookieA被保存在浏览器中,生命周期默认为浏览器关闭4.在浏览器未关闭的情况下(A域名的cookie还在),用户被攻击者诱导打开b网站5.在网站b中,向服务器A发送跨域请求6.在网站b的请求中浏览器为其自动携带上了服务器A的cookie7.服务器A分析请求cookie得到此请求为用户C发起,正确处理网站b的请求
需要明确的是,浏览器设置和携带cookie是根据请求中服务器的域名来设置和获取的,而非请求所在网站域名。所以,用户首次在网站a请求服务器A得到的cookie对应服务器A的域名,在网站b中再次请求时也会携带服务器A域名下的cookie。其实仔细想想,如果cookie对应的是网站请求方的域名,那么一个网站如果请求多个服务器域名的话,那么它们之间的cookie很可能冲突,而且也无法通过cookie来做单点登陆了。
csrf的防范
1.验证 HTTP Referer 字段
HTTP 的 Referer 字段记录了该 HTTP 请求的来源(网址)。通过 HTTP Referer 可以判断请求所在的网址,进而拦截外站的非法请求。
使用这中方式防范 CSRF 的应当注意
- 请求发起者可以设置不携带 Referer,重定向也不会携带 Referer* Referer 由浏览器携带,也可能由于浏览器的实现差异导致问题,或者因为浏览器安全漏洞导致被篡改。* 对于页面请求来说,要注意 Referer 可能是搜索引擎页面> 关于 Referer 的知识可以参考阮一峰老师的HTTP Referer 教程
2.使用验证码校验
对于重要操作如支付来说,可以使用验证码验证用户身份。
3.CSRF Token
CSRF 的本质在于盗用用户的 Cookie 信息然后作为用户凭证冒充用户的操作,如果在验证用户流程中多加个 CSRF Token 的验证,判断 Cookie 是否来自用户网站。那么第三网址发起的请求虽然携带 Cookie 但是获取不到用户网站的 CSRF Token,就可以在服务端设置拦截。
CSRF TOken 可以放置在请求参数中,也可以放在自定义 HTTP 头部字段。但是放在请求中可能由于 Get 请求被放置在 URL 中,再跳转第三方网站时被 Referer 携带泄露。所以推荐放在 HTTP 头部字段中
4.双重Cookie
csrf攻击的原因是请求会自动携带 Cookie,我们可以利用 JS 无法获取跨域 Cookie 的同源限制。发送请求时携带 Cookie 参数,服务器端校验开发者携带的 Cookie 和浏览器自动携带的 Cookie 是否一致来判断是否为正常请求。
双重 Cookie 有以下限制
- Cookie 二级域名的跨域问题(Domain 设置为主域可能会由于其它子域被攻击而导致安全问题)* 无法设置 Cookie 的 HttpOnly* Cookie 导致请求数据加大,资源浪费5.利用 Cookie 的新属性 SameSite
现代浏览器将 Cookie 的 SameSite 设置为 Lax 其实已经将大部分跨域请求都设置为不再携带 Cookie。当然如果设置为 Strict 就可以完全避免跨域携带 Cookie 了。具体详见做一个真正懂cookie的前端。
使用 SameSite 严格模式的缺点
-
新标签重新打开也不携带 Cookie,需要用户重复登录* 二级域名无法共享 Cookie,需要用户重复登录6.检测、监控
-
CSRF检测工具:CSRFTester* CSRF监控:代理层统一拦截监控7.防止网站被利用
-
严格管理所有的上传接口,防止任何预期之外的上传内容(例如HTML)。* 添加Header X-Content-Type-Options: nosniff 防止黑客上传HTML内容的资源(例如图片)被解析为网页。* 对于用户上传的图片,进行转存或者校验。不要直接使用用户填写的图片链接。* 当前用户打开其他用户填写的链接时,需告知风险(这也是很多论坛不允许直接在内容中发布外域链接的原因之一,不仅仅是为了用户留存,也有安全考虑)。总结
–
CSRF攻击利用了浏览器跨域自动携带 Cookie 的特点,我们可以从不同维度防范与减少 CSRF攻击的风险。对于前端安全这块,我也是刚刚开始学习和研究,如果有错误的地方,欢迎大家指出。
网络安全基础入门需要学习哪些知识?
网络安全学习路线
这是一份网络安全从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6mQe6YpW-1676378949428)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]编辑
阶段一:基础入门
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aqOmM79N-1676378949429)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
网络安全导论
渗透测试基础
网络基础
操作系统基础
Web安全基础
数据库基础
编程基础
CTF基础
该阶段学完即可年薪15w+
阶段二:技术进阶(到了这一步你才算入门)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eF2Ein6i-1676378949429)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
弱口令与口令爆破
XSS漏洞
CSRF漏洞
SSRF漏洞
XXE漏洞
SQL注入
任意文件操作漏洞
业务逻辑漏洞
该阶段学完年薪25w+
阶段三:高阶提升
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-swyBz700-1676378949430)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
反序列化漏洞
RCE
综合靶场实操项目
内网渗透
流量分析
日志分析
恶意代码分析
应急响应
实战训练
该阶段学完即可年薪30w+
阶段四:蓝队课程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U8F5xEGo-1676378949431)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
蓝队基础
蓝队进阶
该部分主攻蓝队的防御,即更容易被大家理解的网络安全工程师。
攻防兼备,年薪收入可以达到40w+
阶段五:面试指南&阶段六:升级内容
需要上述路线图对应的网络安全配套视频、源码以及更多网络安全相关书籍&面试题等内容
同学们可以扫描下方二维码获取哦!
![](https://hnxx.oss-cn-shanghai.aliyuncs.com/official/1673601460401.png?t=0.5084107994384632)