ASP.NET 会话状态管理全解析
1. 会话状态的基本应用与安全考量
在在线保险申请等场景中,为了加快申请流程,可将每页的输入内容存储在会话状态中。但从安全和隐私角度看,这些数据也可能轻易出现在隐藏字段或不同网页的表单元素里。
为确保安全,需要保证申请过程中输入的会话状态数据来自通过 SSL 连接提交的页面。并且,仅通过 SSL 连接向用户处理或显示这些信息。开发者要确保不会从不安全的页面(如非 SSL 主页)访问此类信息。
2. 会话数据分区
在应用程序之间,会话数据分区是一个常见问题。乍一看,会话状态似乎可能会将一个应用程序的数据泄露到另一个应用程序中,特别是在进程外会话状态的情况下,所有服务器和应用程序共享一个中央数据库(或会话服务器),这让一些开发者对意外的数据共享有所担忧。
2.1 进程内会话状态
当使用进程内操作模式(如 ASP.NET 3.5 实际上是一个进程内会话状态提供程序)时,使用的是 ASP.NET 缓存对象来存储数据。由于缓存对象管理应用程序域内的一块内存,因此自动实现了数据分区。除非使用调试器或 Win32 API 来探查内存,否则应用程序 A 的会话状态不会意外出现在应用程序 B 中。每个 ASP.NET 应用程序都在自己的应用程序域中运行,没有机制可以跨应用程序域访问会话数据。
2.2 进程外会话状态
使用基于 SQL Server 的进程外会话状态提供程序时,ASP.NET 会在会话状态数据中包含应用程序标识符。例如,有两个使用相同会话状态配置的示例应用程序:
超级会员免费看
订阅专栏 解锁全文
1265

被折叠的 条评论
为什么被折叠?



