CSRF issue in Form.method (asp.net SPA)



我在用hp fortify进行扫描时会遇到CSRF问题。

jQuery.fn.downloadContentUsingServerEcho = function (fileName, contentType, contentEncoding, content) {
        //// test
        //$.ajax({
        //    type: 'POST',
        //    url: 'download/' + fileName,
        //    contentType: 'application/json; charset=utf-8',
        //    data: JSON.stringify({ contentType: contentType, contentEncoding: contentEncoding, content: content })
        //});
        var form = document.createElement('form');
        form.id = 'downloadForm';
       form.method = 'post';
        form.target = 'downloadTarget';
        form.action = 'download/' + fileName;
        var data = {
            contentType: contentType,
            contentEncoding: contentEncoding,
            content: content
        };
        for (var propName in data) {
            if (!data.hasOwnProperty(propName)) { continue; }
            var propValue = data[propName];
            var input = document.createElement('textarea');
            input.name = propName;
            input.value = propValue;
            form.appendChild(input);
        }
        document.body.appendChild(form);
        form.submit();
        document.body.removeChild(form);
    };

我正在以此形式获得。Method='post';

感谢您的帮助解决此问题。

谢谢,

bk

如果您询问如何防止CSRF攻击,OWASP上有一些很好的信息。

Owasp-跨站点请求伪造(CSRF)

注意:也很难阅读您要在代码中尝试做的事情,您应该格式化它,以便我们可以看到您要完成的工作。

我不太了解您的问题是什么。如果HP Fortify说您不使用CSRF令牌来保护您的Ajax调用,则需要生成令牌并将其传递给服务器。

用于在ASP.NET Microsoft中实施,提供了一个很好的教程:https://www.asp.net/mvc/overview/security/xsrfcsrf-prevcsrf-prevention-in-aspnet-inet-aspnet-mvc-mvc-and-web-pages-P>

要自动将CSRF令牌添加到所有AJAX帖子调用中,您只需添加一个预滤器即可。在Ajax Post ASP.NET MVC

中包括抗验药。

注意:某些框架(例如Telerik)要求CSRF令牌为options.data而不仅仅是标头。

最新更新