ASP.NET MVC ViewBag / TempData Security

本文关键字:TempData Security ViewBag NET MVC ASP | 更新日期: 2023-09-27 18:35:39

我正在 ASP.NET MVC上开发一个Web应用程序,我正在使用ViewBag和TempData来存储一些值,这些值将一直存在到用户注销为止。即:登录的用户,一些内部ID,以便我可以检查角色和用户不应知道的另一个值。

我的问题是:

  1. ViewBag/TempData适合这种用途吗?我是否正确使用它或错?
  2. 这些工具安全吗?用户可以嗅探此值吗不知何故?。

感谢您的回答。

ASP.NET MVC ViewBag / TempData Security

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

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

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

ViewBag 用于 View 中所需的附带数据。页面标题,诸如此类。对于视图中所需的其他数据,应使用该模型。

TempData 用于下一个操作所需的附带数据。它可以存储服务器-客户端-服务器之间的一次往返数据;之后,除非您特别让它停留在周围,否则它会被删除。

这些都不会暴露存在安全风险的数据,除非您愚蠢到故意向客户端发送安全数据。

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