2016-01-29 48 views
0

我總是有一個問題,不能找出一種方法來解決它。asp.net mvc隱藏域ID問題

例如在asp.net mvc的,用戶的情況下 「A」 有他的產品:

A1(id=1),A2(id=2). 

如果我們編輯A1,在Edit.cshtml,A1的id = 1只保存在hiddenfield。我們可以使用瀏覽器開發工具將A1的Id修改爲2,所以修改後的值將在發回服務器時完成,儘管我們進行了服務器端驗證。但用戶A有足夠的權利修改他所有的產品A1 A2。那麼在這種情況下,如何防止用戶被黑客攻擊?我認爲還要在url中顯示產品ID;那麼用戶在更新時不能修改它。

我是新來的MVC - 也許你有一些想法或什麼是一般的方法來解決這個問題?

+0

如果你真的擔心使用黑客自己的產品(不知道爲什麼),那麼[這篇文章](http://blog.slatner.com/2010/01/20/SecuringFormValuesInASPNETMVC.aspx)討論一個技術 –

+0

只是確保你有適當的授權。也許在編輯之前,檢查它們是否允許在向前移動之前進行編輯,這也是爲什麼我更喜歡使用GUID(對用戶來說不容易預測),而不是整數。 – dansasu11

回答

0

這最不成爲問題,仍然是一個有效的問題,我怎麼樣瞭解決這個問題,以及簡單的,而不是使用普通的ID,我會加密ID,該模型將是這樣的:

public class ProductSafe 
{ 
    public string Id {get; set;}\\encrypted 
    public string Something {get; set;} 
} 

使用任何你喜歡加密的東西,當你得到的對象id被加密後,當你保存模型時會將其破壞以獲得真正的id。