我正在编写一个MVC5互联网应用程序,其中我的一些视图具有ViewModel的隐藏值。
以下是一个例子:
@Html.HiddenFor(model => model.id)
这是一种安全存储可能敏感的变量的安全方法吗?敏感,我指的是任何用户或任何javaScript代码都不应该看到或改变的变量。
答案 0 :(得分:1)
是的,最终用户可以看到并可能更改该值。 HiddenFor
所做的就是呈现隐藏的输入标记,如下所示:
<input type="hidden" id="id" name="id" value="abc123"/>
因此,这不是存储敏感数据的安全方法。
稍微更好的方式是会话变量,但仍然可以由更精明的用户更改。
答案很大程度上取决于 对数据的敏感程度。您最好的选择可能是将敏感的服务器端保存到数据库或其他数据存储中,并且只将ID提供给客户端,以便在需要时验证并检索数据。
答案 1 :(得分:0)
唯一“安全”的方法是不将变量发送到客户端。除此之外,您可以查看加密发送给客户端的值并在发回客户端时对其进行解密。
如下所示的隐藏字段对用户来说不太明显,更改隐藏字段中的值将使请求无效。
<input type="hidden" id="id" name="id" value="GH1k2ji5as2352"/>