2012-03-26 58 views
0

我正在Asp.Net MVC 3上編寫一個Web應用程序。 假設我們有一些頁面和@ Html.Hidden字段,其中包含一些信息。我能確定用戶永遠不會在隱藏字段中獲取這些信息嗎? 簡而言之:使用隱藏字段的信息是否安全,不應向用戶透露?隱藏字段,安全使用?

回答

7

我可以確定用戶永遠不會在隱藏字段中獲得此信息嗎?簡而言之:使用隱藏字段獲取信息是否安全,不應向用戶透露?

絕對不是。它仍將發送給客戶端 - 它只是不會在呈現的HTML中可見。如果有人使用「查看源代碼」,他們仍然會看到該字段。

我建議你試試看看 - 創建隱藏字段,然後在瀏覽器中查看頁面並選擇「查看源代碼」。瞭解生成的HTML的外觀總是很好的。

如果你必須發送信息給客戶端,首先加密並簽名 - 這樣用戶將無法以純文本查看它,他們將無法僞造一個不同的除了「先前看到的有效值」以外的響應中的值。

1

任何用戶都可以右鍵單擊表單並選擇查看源代碼。這意味着您的所有標記(隱藏的字段incldued)都將對用戶可見。

如果您不希望用戶看到它,請不要發送給他們。考慮堅持服務器端而不是。

+0

+1:「如果你不希望用戶看到它,不要把它給他們。「 – phoog 2012-03-26 17:34:43

2

是否可以安全使用隱藏字段的信息,不應該透露給用戶?

絕對不是。不僅用戶可以看到存儲在隱藏字段中的信息,但他可以修改它。切勿將任何明智信息存儲在隱藏字段中。

1

這是每個人都可以在asp.net項目中犯的常見錯誤。程序員忘記隱藏的字段不可見,所以隱藏的安全信息可以在客戶端查看。

例如,我們有一個隱藏的申請是這樣的:

<asp:HiddenField ID="job_id" runat="server" /> 

問題是什麼?那麼,這個隱藏的值可以被客戶端的其他人通過在瀏覽器中查看源代碼來查看。你會看到這個。

<input id="ctl00_ContentPlaceHolder2_job_id" type="hidden" value="102" name="ctl00$ContentPlaceHolder2$job_id"></input> 

如何更正此問題?這是正確的代碼。你只需要設置Visible =「false」。

<asp:HiddenField ID="job_id" runat="server" Visible="false" /> 

:)

的說明明顯看到更多細節上

wusit.com/blog/member-blog-details.aspx?upn=uE5GzSGY7UI=&bid=yiDsoLlp+Io=

+0

這是爲webforms和問題是關於MVC。 – 2017-04-21 18:41:20