2011-03-02 50 views
0

我有一系列的asp的一個asp.net Repeater控件:超鏈接的保護變量標記的內部的ASP:超鏈接導航屬性

<asp:HyperLink runat="server" ID="name" NavigationUrl="~/Pages/display.aspx?fileid={0}&user={1}" /> 

,然後在OnItemDataBound方法:

fullname.NavigationUrl=string.Format(name.NavigationUrl, user.fileid, user.userid); 

所以這給了我一系列的網址在中繼
http://www.abc.com/users.aspx?fileid=1&userid=10
http://www.abc.com/users.aspx?fileid=2&userid=20
http://www.abc.com/users.aspx?fileid=3&userid=30

好的,所以用一個簡單的代理工具,有人可以用一些OTHER編號替換其中的任何一個參數來訪問他們不應該看到的東西。 服務器端驗證和身份驗證,除了嘗試在中繼器內創建動態URL時傳遞參數,有沒有更好的方法?

謝謝。

回答

2

是的,創建一個LinkBut​​ton,將其發送回服務器,然後獲取所需的信息(可能需要從數據庫中加載),然後執行Response.Redirect。

如果公開查詢字符串,它總是可以更改。我看到的其他方法是加密查詢字符串,並在另一頁上解密。如果解密失敗,它會被修改。

HTH。

0

您可以像Brian已經提到的那樣加密參數。你可以考慮的另一件事是Cross Page Postback。另一種方法是在會話cookie中設置參數,對代碼進行重定向,並在目標頁面上選擇參數。