【网络安全】如何使用 Anti-CSRF Tokens 来加强你的网站操作

在进行网站扫瞄的时候,我们经常发现一个项目名为「Absence of Anti-CSRF Tokens」。这究竟表示我们的网站欠了什么内容,这内容对网站有什么影响,我们又如何解决这问题呢?

Anti-CSRF Tokens 主要用于防止跨站点请求伪造的攻击(CSRF/XSRF)。我们可以尝试从 CSRFCSRF Tokens 的基础知识出发——包括它的产生办法和验证过程,来了解针对特定表单及请求的 CSRF 保护,最后知道 Anti-CSRF Tokens 在防止跨站点请求伪造的攻击发挥的作用。

Anti-CSRF Tokens 是 Web 应用程序中使用的唯一值,用于防止 CSRF 攻击。这是一种客户末端的攻击,可用作把用户重定向到恶意网站、窃取敏感信息,甚至在用户会话中执行其他的操作。

基本来说,Anti-CSRF Tokens 就是向用户的浏览器提供一条信息(Tokens),并检查浏览器有否将其发送回去。透过这种操作,这信息必须是唯一的,并且不可能被第三方猜测,或者仿造。因此,当应用程序要继续运作,就必须验证这唯一的信息。换言之,只有原始用户可以在经过身份验证的会话中(Authenticated Session)发送请求( Request)。

举个例子,我们在一个社交媒体网络应用网站上,当用户填写 HTML 表格进行发布消息,当他提出确认,如按确认按钮,浏览器相对会发送一个 POST 请求。如果当时用户正在登录,并且攻击者对这个请求有一定了解,他就可以使用这个请求进行修改,这就是 CSRF 攻击的基本操作。如将 HTML form message 由「Content:
」改为「Content: ,结果 Post Request 亦会由「subject=subject&content=content」变成「subject=Buy my product!&content=To buy my product, visit this site: Anti-CSRF Tokens.biz」,并进行其他操作比方说是广告发布。

假如网站采用了 Anti-CSRF Tokens,网络服务器则会在用户登录后立即在网络浏览器的会话 Cookie 中设置 Tokens,所有表单提交都包含一个包含 Tokens 的隐藏字段从而完全消除 CSRF 的漏洞。

大家应该也听过 Depth in Defense 的说法。简单来说,就是不要单靠一道门用作防御,网络安全也是同一道理。换言之,我们需将 Anti-CSRF Tokens 和其他方法相结合,以提供最有效的防御作用。当真的发生事故,一道门失手了,也有另一道门可以发挥作用。例如:你可以使用自定义标头来验证Ajax请求。 此技术之所以有效也是基于同源策略,意即只能使用来自同源的 JavaScript 去添加请求标头,才能完成任务!

最后,虽然 Anti-CSRF Tokens 有著它的作用,但它仅仅是防御 CSRF 攻击的最安全方法之一,在某些情况下,攻击者仍然是有方法绕过它的。为了网站的安全,我们更要保持可靠的 Web 应用程序的安全性,并且检查 Web 应用程序是否存在其他类型的漏洞。

往后将继续透过不同文章,分享保持可靠的 Web 应用程序的安全性和检查其他漏洞的要诀。

网络安全在很多方面还需要注意,如有任何疑问欢迎加入我们的 Cybersec Infohub 计划,让行业里的网络安全专家为您解决,如果您怀疑自己或公司的电脑被骇或有可疑的行为,亦请尽快联络网络安全专家求助。

更多文章