【问题标题】:Q: Access asp:TextBox value without rendering it in HTML问:访问 asp:TextBox 值而不在 HTML 中呈现它
【发布时间】:2015-04-23 14:30:59
【问题描述】:

我已经创建了一个这样的 asp:TextBox:

<asp:TextBox ID="tbTheBestID" runat="server" Visible="false" Text="Hello!" />

我正在尝试使用 JQuery 访问文本值,如下所示,但它返回的对象未定义,除非 Visible="true" 代替。我认为这对我来说很有意义,因为它不在源中,所以无法找到。

    function doSomethingInJS() {
        var myVal = $("#<%= tbTheBestID.ClientID%>").val();
    }

我正在寻找一种方法来从 JQuery 访问我在服务器端声明的变量,而不会在源中显示它,因为该数据可能是敏感的,我不希望用户访问它。

这可能吗?谢谢。

【问题讨论】:

    标签: javascript jquery html asp.net security


    【解决方案1】:

    使用visible="false" 会阻止它渲染。您需要做的是通过使用 CSS 类或 display: none; 来阻止它显示。

    将您的代码更改为:

    <asp:TextBox ID="tbTheBestID" runat="server" CssClass="hidden" Text="Hello!" />
    

    并添加到您的 CSS(注意,许多框架可能已经有一个 .hidden 类):

    .hidden {
        display: none;
    }
    

    不幸的是,这将在源中提供,包括任何值。

    因为jQuery运行在客户端,它只能访问它已经发送的信息(因此它必须在页面中才能被页面看到)。

    如果是敏感信息,或许可以考虑使用 Web 服务来提供 $.ajax 调用。请注意,这并不能保证数据安全,但可以最大限度地减少暴露时间。

    【讨论】:

    • 感谢您的回复;这有助于我了解发生了什么。我将不得不将该位移到后面的代码中,以防止信息在源代码中可见。 :p
    • 不幸的是,我们可以原谅 javascript/jQuery 中的任何内容都无法防范恶意(或只是爱管闲事)用户。最好在代码隐藏中保留任何真正敏感的内容。
    猜你喜欢
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2017-06-02
    • 2014-08-18
    • 2017-02-27
    • 2014-07-30
    相关资源
    最近更新 更多