Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 为什么将隐藏字段视为客户端状态管理?_Asp.net - Fatal编程技术网

Asp.net 为什么将隐藏字段视为客户端状态管理?

Asp.net 为什么将隐藏字段视为客户端状态管理?,asp.net,Asp.net,根据和MCTS自定进度培训,asp.net可以使用隐藏字段进行客户端状态管理。书中的材料还说,视图状态比隐藏字段更安全,因为数据是加密的 我一定是遗漏了什么。我设置了一个标签并将其隐藏。我可以将数据存储在这个隐藏标签中,它甚至不会被发送到客户端浏览器。这不仅与服务器端状态类似(注意runat=server),而且似乎比视图状态更安全,因为不需要加密,因为客户端甚至看不到字段 <asp:Label ID="Label1" Visible="false" runat="server">s

根据和MCTS自定进度培训,asp.net可以使用隐藏字段进行客户端状态管理。书中的材料还说,视图状态比隐藏字段更安全,因为数据是加密的

我一定是遗漏了什么。我设置了一个标签并将其隐藏。我可以将数据存储在这个隐藏标签中,它甚至不会被发送到客户端浏览器。这不仅与服务器端状态类似(注意runat=server),而且似乎比视图状态更安全,因为不需要加密,因为客户端甚至看不到字段

<asp:Label ID="Label1" Visible="false" runat="server">secret info</asp:Label>
秘密信息
将其与HTML输入字段进行对比。在这里,客户端状态信息是有意义的

<input id="Text2" type="text" style="visibility:hidden;" value="secret 99" />


那么这是怎么回事呢?

一个未显示的字段不是隐藏字段(即使它是“隐藏的”)


隐藏字段是
字段。用户可以对其进行操作。

在.net中创建标签并将其可见性设置为“隐藏”时,它不会呈现给客户端,其数据存储在viewstate中

因此,它并不比viewstate“更”安全,因为它使用viewstate来维护数据

关于隐藏字段,有四种:第一种是常规的HTML字段,它只是一个hidden类型的输入。虽然它在html中,但没有可见的呈现。它也没有viewstate属性。声明如下:

<input id="MyId" type='hidden' value='whatever' />

第二个是带有css属性的常规输入,该属性将其标记为隐藏:如果css被禁用或以其他方式覆盖,则该控件将对用户可见。除此之外,它与type='hidden'非常接近

<input id='MyId' type='text' value='whatever' style='visibility:hidden' />

第三个是.Net隐藏字段。这确实有viewstate存储,但也会导致在html中生成常规隐藏字段

<asp:HiddenField id='MyId' runat='server' value='whatever' />

第四个是标记为不可见的常规.net文本框

<asp:TextBox id='MyId' runat='server' Text='whatever' Visible='False' />

net文件将导致数据置于viewstate中。HTML的则不然。如果在.Net控件上设置Visible=False,则不会将其呈现给客户端,但其数据通常存储在viewstate中

还有其他将数据放入页面的方法,但它们是上述方法的派生


一般来说,如果您有一个javascript代码需要的值,但不需要向客户机显示该值,那么您将使用一个隐藏字段(html或.net)。如果您有一个秘密值,那么如果可能的话,您通常不希望它转到客户端。这意味着甚至要将其置于可视状态之外。作为补充说明,不要依赖viewstate的“安全性”,有一些工具可以轻松解密它。

但是标签和HTML输入不能以同样的方式使用吗?为什么隐藏字段不被认为是客户端和服务器端技术?啊!这就是秘诀。谢谢Chris