2011-10-18 36 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存在性能問題,那就去做吧。事實上,如果您知道您的整個控制器將被授權用戶使用,請在控制器級應用該過濾器!

相關問題