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

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

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

为什么它显示为漏洞,我该如何解决?

最佳答案 Mohanraj,也许你已经找到了解决方案,但下面是一个看似合理的解释:

HP Fortify表示存在一些误报,这就是为什么您需要逐个分析它指示您的每个漏洞,这就是为什么它有一个分类列表供您分析是否发现漏洞是真正的威胁还是误报.

在这种特殊情况下,为了修复漏洞,您只需要将您尝试传输/发送到Session的类装饰为[Serializable],这在使用会话在应用程序中存储数据时是非常值得推荐的.

由Piet Obermeyer和Jonathan Hawkins检查this article,它更好地解释了序列化的使用.

希望这可以帮助.

点赞