Web 安全 — CSRF 的原理和攻防

简介: Web 安全 — CSRF 的原理和攻防

1、CSRF 是个啥?

CSRF 是跨站请求伪造(Cross Site Request Forgery),它和 XSS 的攻击性相当,危害性也是非常大的。


举个例子,小明今天打开电脑登录 qq,然后去别的小网站找苍老师的学习视频,正在津津有味的学习的过程中,这时候走入了 CSRF 的攻击流程!这个网站的内容是大黑客精心布局的,画面非常刺激。典型的 CSRF 攻击就是点击 B 网站,影响 A 网站。比如,点击小网站,qq 号被盗。


其原理通俗点讲就是:攻击者盗用了你的身份,并以你的名义发送恶意请求或消息,盗取你的账号。比如说用攻击者盗取了你 qq 邮箱的身份,那么它就可以以你的名义发送邮件,这样不仅你的隐私会泄露,你的邮件还可以散播病毒,危害极大。

2、CSRF 的防御手段

解决的办法一定是在服务器端做相应的处理:

(1)服务器端最好过滤掉 GET 请求,尽量使用 POST 请求

因为 GET 请求的参数会显示在 url 上,这样就及其容易被人利用。比如说黑客知道了转账的 url 及参数,那他就可以构建一个 <img> 标签,它的 src 就是你转账的 GET 请求的 url,当你点击黑客构造的页面后,img 标签就会自动发送转账请求,这样就会导致用户的金额被而已转账。


POST 可以很大程度上降低被攻击的风险,但也并不是万无一失的。比如黑客可以构建一个带有 form 表单的网页,通过 script 脚本来触发 submit,这样也能完成恶意转账。


(2)加入验证码

上面这种防御手段并不彻底,即使使用 POST 请求也会存在被攻击的风险,所以可以在前者的基础上加入验证码,这就是为什么大家在登录网站或手机银行转账的过程中需要添加验证码的原因了。


验证码的方式有很多,比如手机短信、图片滑动、点击图片中的字等,加入验证码之后就可以保证了当前的行为是用户发出的而不是黑客伪造的请求了。除非黑客可以破解这个验证码,但是现代化的这些验证码基本上没有办法破解。


(3)验证 Referer

Referer 是存在于 HTTP 报文头部的一个字段,它是由浏览器提供的,可以记录当前请求的来源地址。黑客在伪造请求时只能在自己的网站上构造请求,这样的话服务器验证 Referer 就可以知道这个请求并不是自己网站内部的请求,而是黑客伪造的,直接拒绝。


使用这种方式的好处是简单、方便,一般的开发人员就不用去操心 CSRF 的安全性漏洞了,只需要在转账的接口中加一个拦截器,去验证请求的 Referer 值就可以了。


这种验证 Referer 的方式固然简单高效,但是也并不是万无一失的,虽然说 Referer 的值是由浏览器提供的,但是在某些浏览器上黑客是可以在发送请求时去篡改 Referer 或其他 Header 的值的,这样的话就i相当于跳过了验证,从而又可以进行 CSRF 攻击了。


(4)Anti CSRF Token

之所以会出现 CSRF 的攻击,本质原因是黑客可以伪造用户的请求,用户的请求信息实际上是存在 cookie 中的,所以黑客可以在不知道上述那些验证信息直接跳过安全验证。所以防御 CSRF 的关键点在于当用户的请求在发出的时候,黑客不能去伪造这个信息,并且这个信息不能存在于 cookie 之中。


下面说一种专门预防 CSRF 攻击的方法:Anti CSRF Token。Token,就是令牌,最大的特点就是随机性,不可预测。


Anti CSRF Token 原理上是通过 session token 来实现的。当客户端请求页面时,服务器会生成一个随机数 Token,并且将 Token 放置到 session 当中,然后将 Token 发给客户端(一般通过构造 hidden 表单)。下次客户端提交请求时,Token 会随着表单一起提交到服务器端,服务器端会在收到请求后用拦截器去对 Token 的值进行验证,判断是否和 session 中的 Token 值相等,若相等,则可以证明请求有效,不是伪造的。

目录
相关文章
|
3天前
|
安全 应用服务中间件 网络安全
实战经验分享:利用免费SSL证书构建安全可靠的Web应用
本文分享了利用免费SSL证书构建安全Web应用的实战经验,涵盖选择合适的证书颁发机构、申请与获取证书、配置Web服务器、优化安全性及实际案例。帮助开发者提升应用安全性,增强用户信任。
|
1月前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
62 1
|
1月前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
91 4
|
1月前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
71 2
|
1月前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
94 3
|
1月前
|
SQL 安全 Go
PHP在Web开发中的安全实践与防范措施###
【10月更文挑战第22天】 本文深入探讨了PHP在Web开发中面临的主要安全挑战,包括SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等,并详细阐述了针对这些风险的有效防范策略。通过具体案例分析,揭示了安全编码的重要性,以及如何结合PHP特性与最佳实践来加固Web应用的安全性。全文旨在为开发者提供实用的安全指南,帮助构建更加安全可靠的PHP Web应用。 ###
41 1
|
2月前
|
Kubernetes 安全 应用服务中间件
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
55 3
|
2月前
|
前端开发 Java API
JAVA Web 服务及底层框架原理
【10月更文挑战第1天】Java Web 服务是基于 Java 编程语言用于开发分布式网络应用程序的一种技术。它通常运行在 Web 服务器上,并通过 HTTP 协议与客户端进行通信。
35 1
|
2月前
|
存储 安全 前端开发
在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施
在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施
218 0
|
2月前
|
监控 安全 Apache
构建安全的URL重定向策略:确保从Web到App平滑过渡的最佳实践
【10月更文挑战第2天】URL重定向是Web开发中常见的操作,它允许服务器根据请求的URL将用户重定向到另一个URL。然而,如果重定向过程没有得到妥善处理,可能会导致安全漏洞,如开放重定向攻击。因此,确保重定向过程的安全性至关重要。
130 0