使用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
答案 0 :(得分:0)
如果您问如何防止CSRF攻击,OWASP会提供一些很好的信息。
OWASP - Cross Site Request Forgery (CSRF)
注意:您也很难阅读代码中要执行的操作,您应该对其进行格式化,以便我们可以看到您要完成的操作。
答案 1 :(得分:0)
我不太明白你的问题是什么。如果HP fortify说您没有使用CSRF令牌来保护您的AJAX呼叫,那么您需要生成令牌并将其传递给服务器。
在ASP.NET中实现Microsoft提供了一个很好的教程:https://www.asp.net/mvc/overview/security/xsrfcsrf-prevention-in-aspnet-mvc-and-web-pages
要自动将CSRF令牌添加到所有ajax post调用,您只需添加预过滤器即可。 include antiforgerytoken in ajax post ASP.NET MVC
注意:某些框架(如Telerik)要求CSRF令牌位于options.data中,而不仅仅是标题。