使用ajax请求发送CSRF令牌会削弱其CSRF保护

时间:2010-11-10 18:24:01

标签: php ajax security forms

我有一个表单,在提交时检查CSRF令牌并验证它。当我用ajax提交表单时,我正试图获得相同的安全性。但是ajax请求本身不提交表单,它只是通过post请求将数据发送到url。如果ajax请求与请求一起提交了此CSRF令牌,会发生什么。然后在服务器上,我将检查CSRF令牌。这会以任何方式损害我的表单安全吗?这会导致ajax提交方式被其他人以某种方式利用吗?

2 个答案:

答案 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