我有一个表单,在提交时检查CSRF令牌并验证它。当我用ajax提交表单时,我正试图获得相同的安全性。但是ajax请求本身不提交表单,它只是通过post请求将数据发送到url。如果ajax请求与请求一起提交了此CSRF令牌,会发生什么。然后在服务器上,我将检查CSRF令牌。这会以任何方式损害我的表单安全吗?这会导致ajax提交方式被其他人以某种方式利用吗?
答案 0 :(得分:0)
发布到服务器并包含令牌应该像通过表单一样安全;这只是做同样事情的另一种方式。以下是我正在处理的应用程序的示例:
var getCookie = function(name) {
var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
return r ? r[1] : undefined;
};
var args = {
_xsrf : getCookie("_xsrf"),
// other args added
};
$.ajax({
url : "/ajaxhandler",
data : args,
type : "post",
dataType : "json",
// .. the rest as usual
});
答案 1 :(得分:0)
是的,应该是安全的。只要在另一个域上运行的JavaScript无法读取令牌。这可能发生,例如JSON abuse used against gmail。