【问题标题】:Server side control hidden - possible to read values client side?服务器端控件隐藏 - 可以读取客户端的值吗?
【发布时间】:2010-01-31 03:57:14
【问题描述】:

一个简单的问题。我有两个运行服务器端的文本框,并关闭了它们的可见性。我正在使用几个需要文本框存在的 ASP.NET 控件。但是,我从后面的代码中填充它们,并且不希望用户看到这一点。用户可以打开可见性并查看在文本框中输入的值吗?我尝试使用 FireBug,但似乎无法选择可见性选项来编辑它。但是,我对 Firebug 很陌生,所以可能还有另一种方法?或者在服务器端运行它是否意味着客户端永远无法查看文本框的内容? 谢谢

【问题讨论】:

  • 如果您可以在Firebug中看到这些字段,则表示客户端可用。您可能需要检查display 属性。

标签: asp.net security hidden server-side client-side


【解决方案1】:

使用 Visible 的服务器端属性设置为 false 将导致控件根本不会在浏览器中呈现,这意味着用户将无法在页面源或任何内容中查看它们。

但是,如果您使用 CSS 显示属性设置为 none,则该控件实际上已呈现并且在浏览器中不可见...尽管,由于它是服务器端控件,因此该值将位于已加密的 Viewstate 上,并且用户需要精通技术才能真正获得控制值

【讨论】:

  • ViewState 中的内容是原始值的副本,实际值在元素中的 value 属性中,以纯文本形式存在。用户无需比使用“查看源代码”选项更精明即可查看值。
  • @Guffa 这不一定是真的。此外,ViewState 中的值至少是经过编码的,尽管它们也可以被加密。即使除此之外,ViewState 的结构也没有记录,因此没有可靠的方法对其进行解码。
  • 我试过查看页面源代码,但找不到任何东西。所以要确认一下,如果我对我的文本框使用<runat="server" visible="false"/>,那么客户端永远看不到这些值吗?或者你是说即使数据没有渲染,仍然是在ViewState中传递的(很容易被解码)?谢谢
  • @Eilon:你错了。如果您使用 CSS 隐藏控件,则该值在源代码中肯定会以纯文本形式显示。
  • @Skoder:如果您使用 Visible 属性来阻止控件呈现,则该值不容易看到。 ViewState 可以被解码,但不能没有某种工具。您可以关闭控件的 ViewState 以防止值最终出现在源代码中,但是您必须在每次页面加载时将值放入控件中。
猜你喜欢
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
  • 2021-07-18
相关资源
最近更新 更多