簡體   English   中英

HP Fortify:ASP.NET不良實踐:會話中存儲的非可序列化對象

[英]HP Fortify : ASP.NET Bad Practices: Non-Serializable Object Stored in Session

HttpContextHelper.cs中的方法set_UserActiveEnvironments()在第47行將一個不可序列化的對象存儲為HttpSessionState屬性,這可能會損害應用程序的可靠性

默認情況下,ASP.NET服務器存儲HttpSessionState對象,其屬性以及它們在內存中引用的任何對象。 此模型將活動會話狀態限制為單個計算機的系統內存可以容納的狀態。 為了擴展超出這些限制的容量,服務器經常配置為持久會話狀態信息,這些信息既可以擴展容量,又可以跨多台計算機進行復制,從而提高整體性能。 為了保持其會話狀態,服務器必須序列化HttpSessionState對象,這要求存儲在其中的所有對象都是可序列化的。

為什么它顯示為漏洞,我該如何解決?

Mohanraj,也許你已經找到了解決方案,但下面是一個看似合理的解釋:

HP Fortify表示存在一些誤報,這就是為什么您需要逐個分析它指示您的每個漏洞,這就是為什么它有一個分類列表供您分析是否發現漏洞是真正的威脅還是誤報。

在這種特殊情況下,為了修復漏洞,您只需要將您嘗試傳輸/發送到Session的類裝飾為[Serializable],這在使用會話在應用程序中存儲數據時是非常值得推薦的。

查看Piet Obermeyer和Jonathan Hawkins 撰寫的這篇文章 ,它更好地解釋了序列化的使用。

希望這可以幫助。

我認為Fortify在C#中誤解了set_accessor_declaration 該發現看起來像Fortify無法將value關鍵字的類型鏈接到屬性的類型。

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/classes#accessors

試圖將發現解釋為Session屬性本身需要Serializable屬性似乎是錯誤的。 ASP.NET中不同序列化模式的how-to文章告訴我,會話序列化適用於Session屬性的內容而不是整個屬性。

https://www.codeproject.com/Articles/32545/Exploring-Session-in-ASP-Net

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM