2011-10-13 77 views
1

在我們的應用程序,我們使用的安全功能,使ID在其他方式的道路:保護URL IDS在.NET MVC項目

我們有一個例子:http://some.com/controller/action/12
在安全這將是:http://some.com/controller/action/bs16gz

我們需要推動自動保護(請閱讀:不要在每個控制器中保護和解密Id)。所以它應該是通用解決方案,所有應用程序中都會自動實現。

任何想法?

---- 爲什麼我們需要它? -----
我們要防止用戶更改ID在查詢字符串爲尋找到另一個項目

〔實施例:HTTP://some.com/controller/action/12是一個記錄,那麼用戶的變化ID到13並且看另一個紀錄。我們的系統需要防止這種行爲。

+3

如果不允許用戶查看的記錄,然後在「確保」 IDS是一個黑客,你應該想到一個適當的授權程序 – 2011-10-13 12:06:11

回答

4

我想知道你爲什麼需要這個。如果您不希望某人「在中間」看到這些ID,請使用SSL保護您的HTTP流量。如果您不希望用戶訪問其他用戶的內容,請將安全設置到位。

但是,如果你固定的ID後還在,我認爲模型粘合劑是要走的路:

class MyController 
{ 
    ActionResult Index(SecureID id) 
    { 
     var resource = ResourceRepository.Get<Resource>(id); // implicit conversion to long 
+0

謝謝!這是個好主意,我會測試它。我有其他想法(只是想法) - 1.重寫路由(獲取安全ID,返回int),2.在global.asax中使用OnBeginRequest hendler。你怎麼看,這是不錯的想法? –

+0

@Evgeniy Labunskiy:我寧願遵循Anton的建議,而不是你指出的兩個選項。即使他們要工作,他們的味道也不好。 –

+0

@All謝謝你的幫助! :) –