2011-10-18 34 views
1

我有一个自定义[AuthenticationFilter],它只是重定向未被授权访问管理内容的用户。是否有任何理由过滤POST操作?

我过滤器应用到

[AuthenticationFilter] 
public ActionResult Index() {} 

不过,我也有

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

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

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

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

那么,是否有任何理由将[AuthenticationFilter]应用于文件处理程序?

回答

3

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

任何你可以选择在服务器上添加安全选项的地方,你应该这样做。只需使用浏览器控件即可停止任何请求。

+0

我可以看到你的意思,如果我说,使用Javascript来隐藏控件。但是,在这种情况下,我根本不把控制权交给客户。它停止在服务器端。所以我不确定你的意思是“完全控制”。 –

+2

最终用户可以创建自己的上传按钮。他们可以创建自己的表格,模仿您的具体情况并发布到您的服务中。他们可以使用Curl以编程方式直接发布到您的网站,但请求与浏览器发送的请求无法区分。他们可以完全控制离开他们机器并进入服务器的内容。 –

2

我相信有人可以使用Fiddler这样的东西发送POST。确保该方法的努力是微乎其微的,所以我会说最好是安全而不是抱歉。

2

我会问这个问题,询问是否有理由不应用AuthenticationFilter方法?只要您知道此方法可能存在风险,为什么不应用过滤器;除非你的AuthenticationFilter存在性能问题,那就去做吧。事实上,如果您知道您的整个控制器将被授权用户使用,请在控制器级应用该过滤器!

相关问题