我有一个自定义[AuthenticationFilter]
,它只是重定向无权访问管理内容的用户。
我将过滤器应用于
[AuthenticationFilter]
public ActionResult Index() {}
但是,我也有
[HttpPost]
public ActionResult Index(HttpPostedFileBase file) {}
用于处理文件上传。我在这里需要这个属性吗?
我的直觉告诉我没有。由于uploadButton
被第一种方法阻止加载,因此无法将文件发布到页面。
我能想象的唯一其他安全问题是跨站点AJAX帖子,但这不可能,或者至少不太可能,因为它是一个内部网站点。
那么,有没有理由将[AuthenticationFilter]
应用于文件处理程序?
答案 0 :(得分:3)
您永远不能指望客户端控制(禁用上传按钮)阻止某些东西碰到您的服务器。最终用户完全控制客户端上发生的事情。他们可以启用控件,删除或修改隐藏字段,拦截浏览器请求,或完全绕过浏览器并发出自己的请求(使用他们想要的任何文件)。
您可以选择在服务器上添加安全性的任何地方。只需使用浏览器控件就可以停止任何类型的请求。
答案 1 :(得分:2)
我相信某人仍然可以使用像Fiddler这样的东西发送POST。保证这种方法的努力是微不足道的,所以我会说安全而不是抱歉。
答案 2 :(得分:2)
我转过头来问问是否有理由不将AuthenticationFilter应用于该方法?只要您知道此方法可能存在风险,为什么不应用过滤器;除非您的AuthenticationFilter出现性能问题,否则请继续操作。事实上,如果您知道您的整个控制器注定要由授权用户使用,请在控制器级别应用过滤器!