2016-11-30 27 views
0

我在使用HP fortify进行扫描时遇到了CSRF问题。Form.method中的CSRF问题(asp.net SPA)

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); 
    }; 

我在这个form.method ='post';

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

感谢,

BK

+0

[请阅读并申请](http://meta.stackoverflow.com/questions/251361/how-do-i-format-my-code-blocks)。 –

回答

0

如果你是问你如何防止针对CSRF攻击,OWASP上有一些有用的信息。

OWASP - Cross Site Request Forgery (CSRF)

注:这也很难读什么你想在你的代码,这样做,你应该格式化,这样我们就可以看到你正在试图完成的任务。

+0

你好@SBurris ..我已经格式化了代码。我已经检查了CSRF,但是我无法解决这个问题。 – bkr

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调用后,你可以简单地添加一个预过滤器。 include antiforgerytoken in ajax post ASP.NET MVC

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