防止CSRF漏洞攻击的安全解决方案

      

outputo-20210605-173147-374-gipe.png

因为现代浏览器的工作机制,有一种叫做CSRF的网络攻击形式。本文从攻击的角度分析了这类攻击的原理和作用。本文在阐述攻击原理的同时,提出了服务器端CSRF防御的解决方案。CSRF是现代网络应用中普遍存在的问题。CSRF问题在很多流行的网络框架中都会直接在网络框架级别得到解决。

本文先抛出CSRF问题,然后介绍了基于时间和签名的保护方法,并对该保护方法进行了代码实现。LUA是一种容易理解的脚本语言,每个人都可以直接将Lua代码视为一种伪语言描述工具。各大语言库都支持加密特性,比如sha和base64。在论文的最后,给出了Lua平台上支持这些主要加密功能的各种库,教师实际可以对Lua进行调试,实现基于时间和签名的算法处理流程。

0x02CSRF攻击的原则。

8ebc33b1hub.a89c5537f5d323a4da8.png。

CSRF概念:CSRF跨站请求伪造,类似于XSS攻击,危害极大。您可以理解为:

入侵者偷走了你的身份,并用你的名字发送恶意的请求。该请求对于服务器是完全合法的,但它已经完成了攻击者期望的一项操作,如以您的名义发送电子邮件和邮件、窃取您的帐号、添加系统管理员、甚至购买商品、使用虚拟货币进行转账。网站A是一个带有CSRF漏洞的网站,网站B是一个攻击者设置的恶意网站,用户C是一个合法的A网站使用者。

CSRF攻击的原则和步骤如下:

1.用户c打开浏览器,访问可信网站a,然后输入用户名和口令,申请登陆a;

在用户信息验证之后,网站A生成cookie信息并返回给浏览器。这时用户成功登录网站A,即可正常向A发送请求;

3.用户退出网站A之前,应在相同的浏览器中打开访问网站B的To页;

四、网站B收到用户请求后,返回一些冒犯性代码,向第三方网站A发送请求;

五、浏览器收到这些冒犯代码后,应网站B的要求,在用户不知情的情况下,将请求通过Cookie信息发送到网站A。站点A并不知道请求实际上是由B发起的,因此它将基于用户C的cookie信息,使用C的权限处理请求,导致站点B执行恶意代码。

0x03CSRF防御原则

CSRF保护的重点之一是确认“用户凭证”。此机制可判断用户的请求是否合法,是否为跨站攻击。由于"user凭证"存储在cookies中,因此保护机制的处理对象也是cookie数据。要对受保护的数据添加签名验证,并对数据的生命周期,即数据过期管理进行管理。

拉普斯框架是一个基于拉普斯语言开发的网络框架。该框架包含一个CSRF保护代码(跨站点请求伪造),这是一个CSRF保护设计,围绕时间戳和签名验证。随后,Lapis作者Leafo老师也对csrf处理代码进行了更新:

改变。

替代CSRF实现,删除关键参数并替换为cookie中存储的随机生成的字符串。

跨站攻击的本质就是攻击者通过你的“身份证明”冒充你的关联攻击行为。

为避免CSRF的发生,提出了一种与时间和加密签名直接相关的令牌处理机制。正如上面所提到的,这种设计是为了将时间生命周期管理和签名验证管理添加到认证中。在进行正常的业务处理之前,如果获得了一个证书,就需要判断Token中的“签名”和时间戳是否有效,以便通过验证和过滤非法数据减少CSRF攻击的成功率。

分享: