是否有任何理由过滤POST操作?

时间:2011-10-18 15:54:15

标签: ajax asp.net-mvc-3 security

我有一个自定义[AuthenticationFilter],它只是重定向无权访问管理内容的用户。

我将过滤器应用于

[AuthenticationFilter]
public ActionResult Index() {}

但是,我也有

    [HttpPost]
    public ActionResult Index(HttpPostedFileBase file) {}

用于处理文件上传。我在这里需要这个属性吗?

我的直觉告诉我没有。由于uploadButton被第一种方法阻止加载,因此无法将文件发布到页面。

我能想象的唯一其他安全问题是跨站点AJAX帖子,但这不可能,或者至少不太可能,因为它是一个内部网站点。

那么,有没有理由将[AuthenticationFilter]应用于文件处理程序?

3 个答案:

答案 0 :(得分:3)

您永远不能指望客户端控制(禁用上传按钮)阻止某些东西碰到您的服务器。最终用户完全控制客户端上发生的事情。他们可以启用控件,删除或修改隐藏字段,拦截浏览器请求,或完全绕过浏览器并发出自己的请求(使用他们想要的任何文件)。

您可以选择在服务器上添加安全性的任何地方。只需使用浏览器控件就可以停止任何类型的请求。

答案 1 :(得分:2)

我相信某人仍然可以使用像Fiddler这样的东西发送POST。保证这种方法的努力是微不足道的,所以我会说安全而不是抱歉。

答案 2 :(得分:2)

我转过头来问问是否有理由不将AuthenticationFilter应用于该方法?只要您知道此方法可能存在风险,为什么不应用过滤器;除非您的AuthenticationFilter出现性能问题,否则请继续操作。事实上,如果您知道您的整个控制器注定要由授权用户使用,请在控制器级别应用过滤器!