我正在使用Fortify on Demand处理一些源代码,并获得了其中一些弹出窗口(C#项目):
ASP.NET MVC错误做法:控制器操作不限于POST
Code Flagged: public JsonResult NamesList(GetNamesForGroupsRequest request)
上面提到的代码行是[HttpGet],而不是POST。
再次认为这是一个误报...
答案 0 :(得分:1)
如果您不修改数据,我建议这可能是一个误报。对此的强化说明(我的重点)
ASP.NET MVC控制器操作,该操作通过编写,更新, 或删除可能会因受到限制而无法接受 动词。这增加了跨站点请求伪造的难度 因为意外点击链接不会导致该操作 执行。
从方法签名看来,您似乎是根据请求返回数据,而不是修改请求,因此我认为在您的情况下,它可能被认为是误报。
答案 1 :(得分:0)
使用POST动词来阻止CSRF与PUT或DELETE并没有什么神奇之处。 如果您有适当的CSRF策略,则所用的特定动词应该无关紧要(除了GET。不要使用GET修改数据。)
通过消息正文而不是URL传递数据可能有助于使敏感数据远离日志和其他地方。 (假设您正在使用TLS。)