我有一个angularJS应用程序,我使用Angular's CSRF protection mechanism进行所有POST,PUT和其他非安全的Web服务调用 . 除了一种情况外,它运行良好:一个multipart / form-data POST,它将文件上传到服务器 .
在这种情况下,由于我将表单和文件数据直接发布到Web服务,因此不涉及角度$ http服务,因此不会像对XHR请求那样将CSRF标头附加到请求 .
我有一些问题:
-
我是否需要保护此POST免受CSRF(我想我做)
-
我可以/如何让Angular将CSRF标头添加到POST请求中?
2 回答
如果您通过XQuery通过jQuery将文件上传到服务器,则可以添加默认标头:
我最终决定,由于帖子是由表单而不是AJAX创建的,因此该方法应该在标准MVC控制器中而不是WebAPI控制器中 . 这样我就可以在表单上使用标准MVC
Html.AntiForgeryToken
帮助程序,并在方法上使用ValidateAntiForgeryToken
属性 .