什么时候使用隐藏字段,什么时候使用标题,为什么?X-XSRF_TOKEN当我们使用?当我们使用?
X-XSRF_TOKEN
goqiplq21#
它们都是用于跨站点请求伪造保护的,你只需要使用其中的一个当你发送一个请求到后台时。不同的名字来自不同的框架。这就是发送一个csrf value到后端,然后后端将它与存储在数据库中的特定用户的csrf值进行比较,如果匹配,它将允许处理请求。
csrf value
加拿大皇家空军:
<input name="my_csrf_input" value="a_hashed_string_the_csrf_value"
Laravel特定:
laravel
axios
xsrf-token
angular
x-csrf-token
0ve6wy6x2#
当你使用 AJAX 提交你的数据时,你需要CSRF令牌的头,因为ajax不会将令牌和数据沿着发送。您可以使用以下代码为 AJAX 请求使用隐藏字段
$.ajaxSetup( { headers: { 'X-CSRF-Token': $('input[name="_token"]').val() } });
但是你必须为每个 AJAX 请求添加隐藏字段。X-CSRF-TOKEN和X-XSRF-TOKEN的区别在于前者使用纯文本值,后者使用加密值,因为Laravel中的cookie总是加密的。如果您使用csrf_token()函数提供令牌值,您可能需要使用X-CSRF-TOKEN头。它在laravel 5.2文档中被删除,但您可以在laravel 5.0文档中找到它,链接在这里
6ovsh4lw3#
除了已经给出的答案之外,值得注意的是CSRF和XSRF这两个术语是可以互换的。一般认为,跨站请求伪造最初被称为XSRF,其中“X”代表Cross(1),或者它遵循跨站脚本(XSS)中使用的模式,以避免与CSS(2)混淆。随着时间的推移,一些框架使用“XSRF”来表示通过XHR提供的保护,而“CSRF”则用于表示通过HTML表单提供的保护(参见本页的其他答案)。然而,“CSRF”现在已成为更常用的术语。
3条答案
按热度按时间goqiplq21#
它们都是用于跨站点请求伪造保护的,你只需要使用其中的一个当你发送一个请求到后台时。不同的名字来自不同的框架。
这就是发送一个
csrf value
到后端,然后后端将它与存储在数据库中的特定用户的csrf值进行比较,如果匹配,它将允许处理请求。加拿大皇家空军:
<input name="my_csrf_input" value="a_hashed_string_the_csrf_value"
x-csrf-令牌:
csrf value
放在一个 meta标记中,然后在前端我们可以从该元标记中获取值并将其发送到后端。Laravel特定:
laravel
作为后端时,Laravel会自动检查此标头,并将其与数据库中的有效csrf value
进行比较。(Laravel有一个用于此操作的中间件)x-xsrf标记:
axios
这样的流行库会自动从xsrf-token
cookie中获取这个头的值,并将其放在每个请求头中。xsrf-token
的cookie,然后我们使用angular或axios的前端框架将自动使用它。Laravel特定:
axios
或angular
与laravel
,你不需要做任何事.只是登录用户和'auth'中间件将做这工作.x-csrf-token
相比,它是一个更大的字符串,因为cookie是在laravel中加密的。0ve6wy6x2#
当你使用 AJAX 提交你的数据时,你需要CSRF令牌的头,因为ajax不会将令牌和数据沿着发送。
您可以使用以下代码为 AJAX 请求使用隐藏字段
但是你必须为每个 AJAX 请求添加隐藏字段。
X-CSRF-TOKEN和X-XSRF-TOKEN的区别在于前者使用纯文本值,后者使用加密值,因为Laravel中的cookie总是加密的。如果您使用csrf_token()函数提供令牌值,您可能需要使用X-CSRF-TOKEN头。
它在laravel 5.2文档中被删除,但您可以在laravel 5.0文档中找到它,链接在这里
6ovsh4lw3#
除了已经给出的答案之外,值得注意的是CSRF和XSRF这两个术语是可以互换的。
一般认为,跨站请求伪造最初被称为XSRF,其中“X”代表Cross(1),或者它遵循跨站脚本(XSS)中使用的模式,以避免与CSS(2)混淆。
随着时间的推移,一些框架使用“XSRF”来表示通过XHR提供的保护,而“CSRF”则用于表示通过HTML表单提供的保护(参见本页的其他答案)。
然而,“CSRF”现在已成为更常用的术语。