隐藏的领域,安全使用?

时间:2012-03-26 16:50:29

标签: c# asp.net-mvc hidden-field

我正在Asp.Net MVC 3上编写一个Web应用程序。 假设我们有一些页面和@Html.Hidden字段,其中包含一些信息。我可以确定用户永远不会在隐藏字段中获取此信息吗? 简而言之:使用隐藏字段获取信息是否安全,不应向用户透露?

4 个答案:

答案 0 :(得分:7)

  

我可以确定用户永远不会在隐藏字段中获取此信息吗?简而言之:使用隐藏字段获取信息是否安全,不应向用户透露?

绝对不是。它仍将发送到客户端 - 它只是在呈现的HTML中不可见。如果有人使用“查看源”,他们仍会看到该字段。

我建议您尝试自己查看 - 创建隐藏字段,然后在浏览器中查看页面并选择“查看源代码”。了解生成的HTML的外观总是很好。

如果您必须将信息发送到客户端,请先加密并签名 - 这样用户将无法以纯文本格式查看,并且他们将无法除了“之前看到的有效值”之外,在响应中伪造一个不同的值。

答案 1 :(得分:2)

  

将隐藏字段用于信息是否安全,不应向用户透露?

绝对不是。用户不仅可以看到存储在隐藏字段中的信息,还可以修改它。切勿将任何敏感信息存储在隐藏的区域中。

答案 2 :(得分:1)

任何用户都可以右键单击表单并选择“查看源”。这意味着用户可以看到所有标记(隐藏的字段)。

如果您不希望用户看到它,请不要将其发送给他们。考虑坚持服务器端。

答案 3 :(得分: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 =&#34; false&#34;。

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

:)

查看有关

的更多详情

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