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