2012-03-26 41 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