2013-03-09 70 views
0

我希望有人可以建議,如果下面的情況是可以接受的或不是,如果不是我有什麼其他方式去做這件事。ASP .Net安全執行

我開發了一個使用Forms Authentication的ASP.Net站點,使用我們自己的數據庫(SQL)模型進行身份驗證。多個用戶可以登錄。需要考慮的一點是,每個用戶不能訪問彼此的記錄。

在代碼中,我有頁面加載我有一個用戶對象加載用戶的詳細信息登錄。

當他們訪問記錄時,我有一個超鏈接,其中包含傳入記錄的ID,其中重定向到用戶可以查看完整記錄的詳細信息頁面。

現在的詳細信息頁面上,我再次加載當前用戶的詳細信息,然後有一些SQL來通過登錄的ID的用戶,且傳入的記錄的ID獲得的記錄。

到目前爲止,這有當我登錄訪問自己的記錄的用戶1時工作 - 複製URL並將其粘貼到不同的瀏覽器中,該瀏覽器將用戶重定向到登錄頁面。這次我使用用戶2登錄。頁面顯示爲,但沒有任何詳細信息。

聽起來不錯,或者我需要做什麼?當然,如果沒有返回詳細信息,我將實現重定向到拒絕訪問頁面,而不是顯示空白頁面。

如果您有任何問題隨時問。

+0

請更新標題與您的具體問題..您可以閱讀[常見問題]和[問] – 2013-03-09 11:49:46

+0

你的問題是什麼?你問是否已經實施的機制是安全的?如果這是問題,那麼這是不正確的網站,你可能想試試http://programmers.stackexchange.com/ – 2013-03-09 14:04:13

回答

0

這一切聽起來都不錯 - 儘管我會選擇更細化的東西:可以在訪問控制列表的基礎上訪問其他人的記錄,但這更復雜。

我寫的內容中唯一改變的是「重定向」到訪問被拒絕的頁面。 切勿對錯誤頁面執行重定向 - 而是在原始響應中返回錯誤消息。您可以通過使用Server.Transfer或通過清除響應緩衝區(如有必要)並使用正確的消息將頁面內容設置爲ASCX來在ASP.NET WebForms中執行此操作。不要忘記將HTTP狀態設置爲403.

+0

謝謝戴。當你說「在原始回覆中返回錯誤信息」你是什麼意思?當用戶訪問另一個用戶記錄時,不會返回任何結果。或者你的意思是如果0記錄返回,然後用戶Server.Transfer? – Computer 2013-03-09 11:57:18

+0

「在原始響應中返回錯誤消息」我的意思是你應該返回人類可讀的錯誤消息給用戶而不執行'Response.Redirect',它應該在相同的請求/響應中返回給客戶端週期。 – Dai 2013-03-12 00:17:01

+0

如果沒有行顯示,我可以只顯示「拒絕訪問」面板嗎? – Computer 2013-03-13 15:29:14