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
文字问题,比如使用文字而不是常量。