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 值相等,若相等,则可以证明请求有效,不是伪造的。

目录
相关文章
|
5天前
|
安全 关系型数据库 Shell
Web安全-浅析CSV注入漏洞的原理及利用
Web安全-浅析CSV注入漏洞的原理及利用
9 3
|
11天前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
40 5
|
9天前
|
JSON 安全 JavaScript
Web安全-JQuery框架XSS漏洞浅析
Web安全-JQuery框架XSS漏洞浅析
38 2
|
11天前
|
中间件 API 开发者
深入理解Python Web框架:中间件的工作原理与应用策略
在Python Web开发中,中间件位于请求处理的关键位置,提供强大的扩展能力。本文通过问答形式,探讨中间件的工作原理、应用场景及实践策略,并以Flask和Django为例展示具体实现。中间件可以在请求到达视图前或响应返回后执行代码,实现日志记录、权限验证等功能。Flask通过装饰器模拟中间件行为,而Django则提供官方中间件系统,允许在不同阶段扩展功能。合理制定中间件策略能显著提升应用的灵活性和可扩展性。
14 4
|
13天前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,却也面临着SQL注入、XSS与CSRF等安全威胁。本文将剖析这些常见攻击手段,并提供示例代码,展示如何利用参数化查询、HTML转义及CSRF令牌等技术构建坚固防线,确保Python Web应用的安全性。安全之路永无止境,唯有不断改进方能应对挑战。
40 5
|
11天前
|
SQL 安全 数据安全/隐私保护
Python Web安全大挑战:面对SQL注入、XSS、CSRF,你准备好了吗?
在构建Python Web应用时,安全性至关重要。本文通过三个真实案例,探讨了如何防范SQL注入、XSS和CSRF攻击。首先,通过参数化查询替代字符串拼接,防止SQL注入;其次,利用HTML转义机制,避免XSS攻击;最后,采用CSRF令牌验证,保护用户免受CSRF攻击。这些策略能显著增强应用的安全性,帮助开发者应对复杂的网络威胁。安全是一个持续的过程,需不断学习新知识以抵御不断变化的威胁。
57 1
|
11天前
|
SQL 安全 数据库
Python Web开发者必看!SQL注入、XSS、CSRF全面解析,守护你的网站安全!
在Python Web开发中,构建安全应用至关重要。本文通过问答形式,详细解析了三种常见Web安全威胁——SQL注入、XSS和CSRF,并提供了实用的防御策略及示例代码。针对SQL注入,建议使用参数化查询;对于XSS,需对输出进行HTML编码;而防范CSRF,则应利用CSRF令牌。通过这些措施,帮助开发者有效提升应用安全性,确保网站稳定运行。
26 1
|
14天前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,但安全挑战不容小觑。本文剖析Python Web应用中的三大安全威胁:SQL注入、XSS及CSRF,并提供防御策略。通过示例代码展示如何利用参数化查询、HTML转义与CSRF令牌构建安全防线,助您打造更安全的应用。安全是一场持久战,需不断改进优化。
27 3
|
5天前
|
SQL 开发框架 安全
Web开发中常见的安全缺陷及解决办法
Web开发中常见的安全缺陷及解决办法
|
20天前
|
数据可视化 图形学 UED
只需四步,轻松开发三维模型Web应用
为了让用户更方便地应用三维模型,阿里云DataV提供了一套完整的三维模型Web模型开发方案,包括三维模型托管、应用开发、交互开发、应用分发等完整功能。只需69.3元/年,就能体验三维模型Web应用开发功能!
41 8
只需四步,轻松开发三维模型Web应用
下一篇
无影云桌面