php - X-XSRF-TOKEN 和 X-CSRF-TOKEN 有什么区别?

标签 php security laravel-5.2 csrf

什么时候用隐藏字段,什么时候用header,为什么?
X-XSRF_TOKEN 我们什么时候用?
X-CSRF TOKEN我们什么时候用?

最佳答案

所有这些都是为了防止跨站请求伪造,在向后端发送请求时只需要使用其中一个。不同的名称来自不同的框架。

这都是关于发送 csrf value后端。然后后端会将它与存储在该特定用户的数据库中的 csrf 值进行比较,如果匹配,它将允许处理请求。

csrf :

  • 用于 html 表单(不是 ajax)
  • 在呈现 html 表单时在后端生成。
  • 我们不能直接在html表单中设置请求头,所以一个简单的方法是通过表单输入将其作为隐藏字段发送。
  • 你可以随意命名这个隐藏的输入。例如<input name="my_csrf_input" value="a_hashed_string_the_csrf_value"

x-csrf-token:

  • 它被添加到请求 ajax 请求的 header
  • 要使用它,我们可以将 csrf value在呈现 html 时在元标记中,然后在前端我们可以从该元标记中获取值并将其发送到后端。

Laravel 特定:

  • 使用 laravel 时作为后端。 Laravel 会自动检查此 header 并将其与有效的 csrf value 进行比较在数据库中。(laravel 有一个中间件)

x-xsrf-token:

  • 它被添加到请求 ajax 请求的 header
  • angular 和 axios 等热门库, 自动从 xsrf-token 获取此 header 的值cookie 并将其放入每个请求 header 中。
  • 要使用它,我们应该创建一个名为 xsrf-token 的 cookie在后端,那么我们使用 angular 或 axios 的前端框架将自动使用它。

Laravel 特定:

  • 因为它很流行,laravel 在每个响应中创建这个 cookie。
  • 所以当你使用例如axiosangularlaravel ,您无需执行任何操作。只需让用户登录,“auth”中间件就会完成这项工作。
  • 在 laravel 中,它是一个比 x-csrf-token 更大的字符串因为 cookies 在 laravel 中是加密的。

关于php - X-XSRF-TOKEN 和 X-CSRF-TOKEN 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42408177/

相关文章:

PHP MySQL INSERT 错误,我找不到它 o_o

php - 通过格式化 JSON 数组输出

php - 如果 END 之前没有未结束的 START,那么替换/删除 END 的正则表达式是什么?

security - 从电子邮件即时登录。为什么这样做的人这么少?

bash - SSHD 配置检查 bash 脚本

php - 在 Laravel 5.2 中使用 vinkla/hashids 包

javascript - 单击并触发 Ajax 生成的表上的函数

java - 运行时应用程序 self 保护 (RASP)

php - 在 Laravel 5.2 中创建新类

algorithm - Laravel5.2 中的缓存