📜  js 中的 CSRF 令牌 - Html (1)

📅  最后修改于: 2023-12-03 14:43:29.887000             🧑  作者: Mango

JS 中的 CSRF 令牌 - Html

什么是 CSRF?

CSRF,全称为 Cross-Site Request Forgery(跨站请求伪造),是一种网络安全攻击技术,其原理是攻击者利用受害者已经登录了某个网站的情况下,在不知情的情况下向该网站发送请求,以达到攻击的目的。

CSRF 的危害

CSRF 攻击主要的危害是可以在不知情的情况下,让受害者在已登录的状态下执行任意的操作,如转账、修改密码等。因此,如果网站没有采取相应的措施,就会很容易遭到 CSRF 的攻击。

防御 CSRF 的方法

为了防御 CSRF 的攻击,可以采用 CSRF Token 的方式。具体流程如下:

  • 在用户请求页面时,服务器随机生成一个 CSRF Token,并将其返回给客户端;
  • 在提交表单时,发送该 Token 给服务器;
  • 服务器在收到请求时,会对比表单中的 Token 和 Session 中的 Token 是否一致,如果不一致,就会认为是 CSRF 攻击,拒绝该请求。
CSRF Token 的实现

在 Html 中,可以通过以下代码实现 CSRF Token 的生成和提交:

<form method="POST" action="/submit">
  <input type="hidden" name="_csrf" value="<%= csrfToken %>">
  <input type="text" name="username">
  <input type="password" name="password">
  <button type="submit">Submit</button>
</form>
  • 在表单中添加一个隐藏的字段 _csrf,用于存放 CSRF Token 的值;
  • 在服务端生成 CSRF Token 并返回给客户端,使用模板引擎将其渲染到表单中;
  • 在表单提交时,将 _csrf 字段的值一起提交到服务器。
总结

通过使用 CSRF Token 的方式,可以有效地防御 CSRF 攻击,提高应用程序的安全性。在实现时,需要注意生成 Token 的方式和存储位置,以及如何将 Token 发送到服务器。