我在用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而不仅仅是标头。