Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
C# 最终用户可以看到或更改HTML隐藏变量吗?_C#_Hidden_Asp.net Mvc Views - Fatal编程技术网

C# 最终用户可以看到或更改HTML隐藏变量吗?

C# 最终用户可以看到或更改HTML隐藏变量吗?,c#,hidden,asp.net-mvc-views,C#,Hidden,Asp.net Mvc Views,我正在编写一个MVC5互联网应用程序,其中一些视图具有ViewModel的隐藏值 以下是一个例子: @Html.HiddenFor(model => model.id) 这是存储可能敏感的变量的安全方法吗?敏感变量是指任何用户或任何javaScript代码都不应看到或更改的变量。是的,最终用户可以看到并可能更改该值。HiddenFor所做的只是呈现一个隐藏的输入标记,如下所示: <input type="hidden" id="id" name="id" value="abc123

我正在编写一个MVC5互联网应用程序,其中一些视图具有ViewModel的隐藏值

以下是一个例子:

@Html.HiddenFor(model => model.id)

这是存储可能敏感的变量的安全方法吗?敏感变量是指任何用户或任何javaScript代码都不应看到或更改的变量。

是的,最终用户可以看到并可能更改该值。
HiddenFor
所做的只是呈现一个隐藏的输入标记,如下所示:

<input type="hidden" id="id" name="id" value="abc123"/>

因此,这不是存储敏感数据的安全方法

一个稍微好一点的方法是使用会话变量,但更精明的用户仍然可以更改它

答案在很大程度上取决于数据的敏感程度。最好的办法可能是将任何敏感的服务器端保存到数据库或其他数据存储中,并且只向客户端提供一个ID,以便在需要时验证和检索数据。

唯一“安全”的方法是不将变量发送到客户端。除此之外,您还可以考虑对发送给客户端的值进行加密,并在它们发回时对其进行解密

下面这样的隐藏字段对于用户来说并不明显,更改隐藏字段中的值将使请求无效

<input type="hidden" id="id" name="id" value="GH1k2ji5as2352"/>


HiddenFor只生成一个type=hidden的输入,因此为“否”。用户可以使用session、viewstate、view bag等对用户隐藏数据。像Chrome和Firefox这样允许实时编辑数据的客户端是您无法真正控制的。您可能可以使用会话存储来存储id,因为它很小并且可以很容易地清除。Cookie也可以工作。如果你把你写在cookie@RenukaDeshmukh没错。在某种程度上,唯一可以确定的方法是对数据进行编码或加密。就像我说的,这取决于数据的安全程度。这是一个古老的评论,也是一个古老的神话。会话数据存储在服务器端,用户不可编辑。客户端仅存储用于跟踪用户的引用ID。