字符串文本和 J2EE 不良做法:存储在会话中的不可序列化对象



Fortify正在标记与此类似的行

session.setAttribute("foo", "bar")

https://vulncat.fortify.com/en/detail?id=desc.structural.java.j2ee_bad_practices_non_serializable_object_stored_in_session

对于 .NET 来说,这里有一个类似的问题,答案是它是一个"误报",因为文档要求值必须实现 ISerializable,而 String 没有。 但是在 J2EE 版本的文档中,它必须只实现可序列化。 哪个字符串可以。

问题是字符串文字吗? 以下内容会消除强化消息吗?

session.setAttribute("foo", new String("bar"))

更新我有三个强化警告,它们都是字符串文字。 它似乎不介意字符串属性,例如以下传递:

session.setAttribute("foo", myObject.myString)

问题是String字面意思吗?

不。"bar"new String("bar")都是String对象,并且都是可序列化的,因为它们的类实现了java.io.Serializable

以下内容会消除强化消息吗?

你告诉我。如果这些都不起作用或只有一个有效,那就是强化问题,而不是你的问题。

也许它警告了一个不同的String文字问题,比如使用文字而不是常量。

最新更新