如何在没有隐藏字段的情况下将JavaScript变量发送到(asp-net-code-behind)c#

How to send JavaScript variable to (asp net code behind) c# without hidden field

本文关键字:变量 asp-net-code-behind JavaScript 隐藏 情况下 字段      更新时间:2023-09-26

如何在不使用<input type="hidden" />字段的情况下将JavaScript变量发送到(ASP.NET代码隐藏)C#?在浏览器检查器中,hidden字段及其值可见且可编辑。

您可以使用AJAX方法

一个好的教程:http://www.brainbell.com/tutorials/ASP/A_Web_Service_In_ASP.NET.html

例如,代码隐藏:

        [WebMethod]
        public static bool UpdateLocation(string lat)
        {
            try
            {
                //Your code
            }
            catch (Exception ex)
            {                   
                throw;
            }
        }

示例Javascript代码:

         $.ajax({
                        type: "POST",
                        url: "/MyPage.aspx/UpdateLocation",
                        data: "{lat:'1313.23232'}",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json"
                });

如果我在会话中从js保存我的变量,然后从会话在asp.net中打开这个变量,用户还能看到并更改变量吗?

两件事:

首先,正如@AnibalDíaz所说,如果你不想在页面上有<input type="hidden" />标签,你可能应该通过AJAX而不是表单来执行这个操作。

然而,第二,如果您担心用户可以看到该字段的值,那么您将面临更大的问题。在当前的浏览器检查器中,通常有一个"网络"选项卡,您可以在其中查看页面中的所有HTTP请求。大多数在HTML中寻找数据的人也知道,他们可以通过网络选项卡轻松地看到HTTP请求中的数据,事实上,他们可能会先去那里,而不是检查表单。如果你担心他们更改数据,许多浏览器的网络工具也允许你修改请求并再次发送,因此,他们也将能够轻松地发送具有该字段的不同值的另一个请求。

有一些方法可以让这变得更加困难,但最终,网页上没有任何内容是私有的。当你向用户发送网页时,你也在向他们发送你所有的JavaScript代码。恶意用户总是可以修改该代码并更改其行为。这意味着您永远不应该依赖浏览器来获得安全性。如果您不希望用户能够查看或修改某些数据,请不要将该数据发送给用户

您可能需要重新思考一下您的体系结构。我对C#或ASP.NET了解不多,但如果你能在服务器上维护每个用户的会话,并在服务器上存储与该用户相关的数据,那就好了。如果您的数据存储在服务器上,并且从未发送到浏览器,则用户无法访问您的数据。