Geo*_*Geo 9 .net c# cookies asp.net-mvc session
我们正在尝试决定在Web应用程序中维护状态的最佳决策.我们倾向于在浏览器上使用加密的cookie,但是我们的一些开发人员认为我们应该在服务器上使用Session变量.
我认为Cookie是最佳方法的主要原因仅仅是因为我们不会在负载平衡方案中依赖应用服务器.
反对使用cookie的主要原因是处理cookie可能会很混乱.
你对这个话题有什么看法?
编辑1:
好.我从第一篇文章中看到,这两种方法都不是最好的.那么愿望的方法是什么呢?
这里有两个问题.首先是cookie和会话之间的区别.除非您使用的是无Cookie会话(例如URL中的唯一ID),否则会话只是一个非常短的过期cookie.您可以使用状态服务器(ScaleOut,Velocity,SQL Server)轻松配置应用程序以跨多个服务器共享会话
当然,假设您使用用户的cookie来存储唯一的ID,并将其链接回服务器上的所有真实数据,可能在数据库中.然而:
将敏感数据存储在用户的cookie中,即使加密,也不是那么安全,因为它必须是可解密的,这意味着它是易受攻击的.无论何时选择在应用程序中使用双向加密,您都会承受更大的加密负担,以保持相同的安全级别.如果您没有一些可靠的加密专业知识,那么最好采取安全的方法而不是这样做.
简而言之,使用内置会话或滚动自己的会话,无论哪种方式,都要确保您发送给客户端的唯一信息是一个不可思议的ID,您可以将其绑定到存储在您端的数据.
分配...与该用户关联的临时ID,如GUID.由于GUID在天文学上是独特的并且实际上是防碰撞的,因此它们几乎不可能从系统外部猜测或预测.
滚动您自己的基于cookie的会话/"记住我"功能的优势在于它可以让您更好地控制信息的持续,分发等等.另一方面,它确实代表了更多的工作,其中一些是重新 - 实现ASP.NET Session开箱即用的功能.通常情况下,我建议使用已经存在的内容,除非您能清楚地阐明一些驱动业务需求,以此作为一种选择.
| 归档时间: | 
 | 
| 查看次数: | 411 次 | 
| 最近记录: |