ASP.NET MVC ViewBag / TempData安全性

时间:2016-02-20 17:17:30

标签: c# asp.net-mvc

我正在ASP.NET MVC上开发一个Web应用程序,我正在使用ViewBag和TempData来存储一些在用户注销之前会存活的值。即:用户登录的是什么,一些内部ID,以便我可以检查角色和用户不应该知道的其他值。

我的问题是:

  1. ViewBag / TempData是否适用于此用途?我使用它还是正确的 错?
  2. 这些工具是否安全?用户可以嗅探此值 某种方式?
  3. 感谢您的回答。

3 个答案:

答案 0 :(得分:2)

TempData只会持续到下一页访问; ViewBag用于将值从控制器传递到视图。两者都不适合存储将持续会话的信息。在安全性方面,它们都是服务器端,用户不会意识到它们,所以,是的,它们是安全的。

如果要在会话期间保留值,则需要使用不同的机制。有几种可供您使用。我最喜欢的是使用会话变量,但是一些开发人员坚决反对会话变量。您需要进一步研究您的选择。

答案 1 :(得分:1)

您应该在会话中存储基于会话的数据。

ViewBag适用于View中需要的附带数据。页面标题,类似的东西。对于视图中需要的其他数据,您应该使用该模型。

TempData用于下一个操作所需的附带数据。它可以存储服务器 - 客户端 - 服务器之间的一次往返数据;除非你特意把它粘在一边,否则它会被删除。

除非您愚蠢地将安全数据故意发送给客户,否则这些都不会暴露存在安全风险的数据。

答案 2 :(得分:0)

为了检查用户的角色,您可以使用MVC的基于角色的授权,例如[Authorize(Roles = "Administrator")] ....您的查询(2): ,它们是安全的...但不是为了您长期存放东西的目的。对于这样的持续时间,开发人员大多使用Session这也是安全的