防伪令牌作为 header 字段或作为 AJAX 上的 Post 值?
Anti forgery token as header field or as Post value on AJAX?
我现在正致力于 Ring Anti Forgery 以防止网站受到 CSRF 攻击。现在我怀疑我是否应该将令牌作为 header 字段或 post
值传递给 AJAX 请求,因为它们似乎都有效。
文档上写着:
The middleware also looks for the token in the X-CSRF-Token and
X-XSRF-Token header fields, which are commonly used in AJAX requests.
在我这边将其设置为 header 字段的缺点是我必须将每个 Jquery $.post
更改为简单的 $.ajax
以便我可以设置headers.
例如
$.ajax({
url: "url",
type: "post",
data: {
username: username,
sender: sender
},
headers: {
"X-CSRF-Token": X_CSRF_Token,
}
});
对比
$.post( "url", { username: username, sender: sender, '__anti-forgery-token': X_CSRF_Token})
.done(function( data ) {
// done
});
我是否需要将每个 jQuery $.post
更改为 $.ajax
以便我可以将防伪标记设置为 header 字段?
您可以使用$.ajaxSetup
to set the CSRF token at every ajax call: https://gist.github.com/alanhamlett/6316427
我现在正致力于 Ring Anti Forgery 以防止网站受到 CSRF 攻击。现在我怀疑我是否应该将令牌作为 header 字段或 post
值传递给 AJAX 请求,因为它们似乎都有效。
文档上写着:
The middleware also looks for the token in the X-CSRF-Token and X-XSRF-Token header fields, which are commonly used in AJAX requests.
在我这边将其设置为 header 字段的缺点是我必须将每个 Jquery $.post
更改为简单的 $.ajax
以便我可以设置headers.
例如
$.ajax({
url: "url",
type: "post",
data: {
username: username,
sender: sender
},
headers: {
"X-CSRF-Token": X_CSRF_Token,
}
});
对比
$.post( "url", { username: username, sender: sender, '__anti-forgery-token': X_CSRF_Token})
.done(function( data ) {
// done
});
我是否需要将每个 jQuery $.post
更改为 $.ajax
以便我可以将防伪标记设置为 header 字段?
您可以使用$.ajaxSetup
to set the CSRF token at every ajax call: https://gist.github.com/alanhamlett/6316427