HP Fortify:ASP.NET 不良做法:会话中存储的不可序列化对象

Moh*_*j R 5 asp.net c#-4.0 fortify fortify-source ggfortify

HttpContextHelper.cs 中的 set_UserActiveEnvironments() 方法将不可序列化的对象存储为第 47 行的 HttpSessionState 属性,这会破坏应用程序的可靠性

默认情况下,ASP.NET 服务器在内存中存储 HttpSessionState 对象、它的属性和它们引用的任何对象。此模型将活动会话状态限制为单个机器的系统内存可以容纳的状态。为了扩展容量超出这些限制,服务器经常被配置为持久的会话状态信息,这既扩展了容量又允许跨多台机器复制以提高整体性能。为了保持其会话状态,服务器必须序列化 HttpSessionState 对象,这要求存储在其中的所有对象都是可序列化的。

为什么将其显示为漏洞,我该如何修复?

Ele*_*lin 1

Mohanraj,也许您已经找到了解决方案,但以下是一个合理的解释:

HP Fortify 指出了一些误报,这就是为什么您需要对其指出的每个漏洞进行逐案分析的原因,这就是为什么它有一个分类列表供您分析发现的漏洞是否是真正的威胁或误报。

在这种特殊情况下,要修复该漏洞,您只需将尝试传输/发送到 Session 的类装饰为 [Serialized],在使用会话在应用程序内存储数据时强烈建议这样做。

查看Piet Obermeyer 和 Jonathan Hawkins 撰写的这篇文章,其中更好地解释了序列化的使用。

希望这可以帮助。