“如何存储信息”;“每浏览器”选项卡;在ASP.NETMVC中?
在MVC应用程序中,我有一个两页的进程。在第一页中,我们收集信息,这些信息将允许我们确定要更新的数据库记录。在第二页,我们收集用于更新此记录的新值。为了让它工作,我们需要一种在两个页面之间持久化信息的方法,包括一些记录id 我想到了两种方法,但都有一些问题“如何存储信息”;“每浏览器”选项卡;在ASP.NETMVC中?,asp.net,asp.net-mvc,asp.net-mvc-4,Asp.net,Asp.net Mvc,Asp.net Mvc 4,在MVC应用程序中,我有一个两页的进程。在第一页中,我们收集信息,这些信息将允许我们确定要更新的数据库记录。在第二页,我们收集用于更新此记录的新值。为了让它工作,我们需要一种在两个页面之间持久化信息的方法,包括一些记录id 我想到了两种方法,但都有一些问题 将信息存储在会话对象中 只要用户不打开第二个浏览器窗口或选项卡,此功能就可以工作。如果他这样做了,他就有可能将修改应用到错误的记录上。假设他打开选项卡1并完成第一步。记录id 1存储在会话对象中。然后,用户打开选项卡2并完成第一步。然后,记录
安全存储数据的其他好方法是“每个选项卡”而不是“每个会话”?如果您想在不同的选项卡中分离信息,您应该为每个打开的浏览器选项卡使用不同的信息 您可以这样设置:
sessionStorage.setItem("perTabValue", "true");
然后您可以获得您的价值:
var x = sessionStorage.getItem("perTabValue");
if(x === "yourValue"){
//do anithing you want
}
考虑到方法2,您可以检查服务器端的安全性。如果用户对特定记录没有修改权限,则服务器不得保存该记录。否则,他/她正在修改对其具有修改权限的记录,而不管他/她是通过标准用户界面还是在其下进行黑客攻击。我认为您混淆了两件事-授权和传递数据 如果用户被授权使用“另一个记录”进行操作,那么他是否“调整隐藏的内容”并不重要,因为他也被授权更改另一个记录。没有人会故意这么做。意味着-您只需要检查用户是否有权在用户的每篇文章中(即在每个控制器方法中)执行操作(这是通常的做法,总是在服务器端验证所有用户输入)
我建议您选择“隐藏字段”。我想我需要存储在服务器端的信息,这样用户就无法忍受了。我认为唯一的方法是通过ajax将信息发送到服务器。