繁体   English   中英

ASP.NET MVC ViewBag / TempData安全

[英]ASP.NET MVC ViewBag / TempData Security

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

我的问题是:

  1. ViewBag / TempData是否适合此用途? 我使用的是对还是错?
  2. 这些工具安全吗? 用户能否以某种方式嗅到该值?

感谢您的回答。

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

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

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

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

TempData用于下一个操作所需的附带数据。 它可以存储服务器-客户端-服务器之间的一次往返数据; 之后将其删除,除非您明确地将其粘住。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM