Hide QueryString MVC3 -ASP.NET
本文关键字:NET -ASP MVC3 QueryString Hide | 更新日期: 2023-09-27 17:59:58
我将Vaus存储在RouteData中,如下所示。
new RouteValueDictionary(new { Controller = "Absence", Action = "AmendAbsence", Id = PersonGuidSelected })
我正在使用以下RouteData.Values["id"].ToString()
从RouteData中获取值
这是可以的,但是这些值在URL中是可见的。我不希望在URL中看到这些值。
我怎么能那样做?
以前有人这样做过吗?
您可以将其加密存储在URL中只需加密每个Querystring参数。这样做的优点是,您的用户可以使用参数为页面添加书签(除非这不是您想要的;然后您可以将过期时间添加到加密值中,这样您就可以检测URL是否已经过期)。
选项#2是将您的值存储在客户端上的加密非持久cookie中,如果您需要将它们从页面视图持久化到页面视图。您希望它们被加密,这样就不能从浏览器的内存中读取,并且希望它们是非持久性的,这样就不会保存到文件中。用户无法为URL添加书签。
选项#3的可扩展性最低,即将其存储在ASP.NET服务器或state服务器上的会话状态中。任何一个服务器都不应该受到攻击,因此没有必要在此处使用加密。但是,如果你的服务器很慢和/或有很多访客,这可能会减慢机器的速度。同样,访问者不能为URL添加书签,因为参数没有存储在那里。
选项#4是在URL中存储哈希密钥,并将与该哈希密钥相关的实际数据存储在内存或数据库中。同样,你必须看看这在你的情况下是否可行。用户可能会也可能无法为URL添加书签,这是你的选择——如果可以,那么你需要永久记录(哈希键、值)对。
如果这是敏感数据,有两种可能性:
- 将其存储在服务器上的会话中
- 将其存储在客户端的加密cookie中。如果使用表单身份验证,则可以使用FormsAuthentication票证的userData部分。通过这种方式,它将随每个请求一起发送。但如果它真的是非常敏感的数据,将其存储在服务器上会更好。然后使用经过身份验证的用户名来检索存储在服务器上的数据
如果它不敏感,您可以使用POST而不是GET,这样典型的用户就不会在URL中看到它。