HP Fortify:ASP.NET错误做法:会话中存储的不可序列化对象
HttpContextHelper.cs中的方法set_UserActiveEnvironments()将不可序列化的对象作为HttpSessionState属性存储在第47行,这可能会损害应用程序的可靠性 默认情况下,ASP.NET服务器在内存中存储HttpSessionState对象、其属性以及它们引用的任何对象。该模型将活动会话状态限制为一台机器的系统内存所能容纳的状态。为了将容量扩展到这些限制之外,服务器经常配置为持久会话状态信息,这既扩展了容量,又允许跨多台计算机进行复制,以提高总体性能。为了保持其会话状态,服务器必须序列化HttpSessionState对象,这要求存储在其中的所有对象都是可序列化的HP Fortify:ASP.NET错误做法:会话中存储的不可序列化对象,asp.net,c#-4.0,fortify,fortify-source,ggfortify,Asp.net,C# 4.0,Fortify,Fortify Source,Ggfortify,HttpContextHelper.cs中的方法set_UserActiveEnvironments()将不可序列化的对象作为HttpSessionState属性存储在第47行,这可能会损害应用程序的可靠性 默认情况下,ASP.NET服务器在内存中存储HttpSessionState对象、其属性以及它们引用的任何对象。该模型将活动会话状态限制为一台机器的系统内存所能容纳的状态。为了将容量扩展到这些限制之外,服务器经常配置为持久会话状态信息,这既扩展了容量,又允许跨多台计算机进行复制,以提高总体性
为什么它会显示这是一个漏洞,我如何修复它?Mohanraj,也许你已经找到了解决方案,但下面是一个合理的解释: HP Fortify指出存在一些误报,这就是为什么您需要对它指出的每个漏洞逐一分析的原因,也是为什么它有一个分类列表供您分析发现的漏洞是真正的威胁还是误报的原因 在这种特殊情况下,要修复该漏洞,只需将尝试传输/发送到会话的类修饰为[Serializable],这在使用会话在应用程序中存储数据时是非常推荐的 请看Piet Obermeyer和Jonathan Hawkins的文章,他们更好地解释了序列化的使用
希望这能有所帮助。我认为加强C语言中的误解
设置访问器声明。该发现似乎Fortify无法将值的类型
关键字链接到属性的类型
试图将查找解释为会话属性本身需要可序列化属性,这似乎是错误的。关于ASP.NET中不同序列化模式的一篇介绍文章告诉我,会话序列化应用于会话属性的内容,而不是整个属性
HttpContext.Current.Session[“PageName”]=“此页面”;如何将字符串标记为可序列化?我通过字符串pageName=“thispage”传递;HttpContext.Current.Session[“PageName”]=PageName;也它不允许我在没有高易受攻击性报告的情况下使用字符串。我认为字符串应该是可序列化的。