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

Java 字符串文本和J2EE错误做法:会话中存储的不可序列化对象,java,string,jakarta-ee,literals,fortify,Java,String,Jakarta Ee,Literals,Fortify,Fortify正在标记一条类似于此的线 session.setAttribute("foo", "bar") 对于.NET,这里有一个类似的问题,答案是这是一个“假阳性”,因为文档要求值必须实现ISerializable,而字符串没有实现ISerializable。但是在J2EE版本的文档中,它必须只实现可序列化。哪个字符串可以 问题是它是字符串文字吗?以下内容会消除强化信息吗 session.setAttribute("foo", new String("bar")) 更新 我有三个强化

Fortify正在标记一条类似于此的线

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

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

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

session.setAttribute("foo", new String("bar"))
更新 我有三个强化警告,它们都是字符串文字。 它似乎不介意字符串属性,例如以下过程:

session.setAttribute("foo", myObject.myString)
问题是它是
字符串
文本吗

否。
“bar”
新字符串(“bar”)
都是
String
对象,都是可序列化的,因为它们的类实现了
java.io.Serializable

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

session.setAttribute("foo", new String("bar"))
你告诉我。如果两者都不起作用,或者只有一个起作用,那么这是一个强化问题,而不是你的问题


也许这是对另一个
字符串
文本问题的警告,比如使用文本而不是常量。

看起来像是Fortify中的一个bug。对于一个非常基本的功能。或者你的“类似于此的线条”其实并不相似。请显示更具代表性的代码。@Thilo非常相似。我只是替换了这两个文字来保护我公司的身份。此外,还有3个单独的强化示例,在这三种情况下,会话中的值都是字符串文字。它不会抱怨字符串属性,例如myObject.myString传递。如果它们都是字符串文本,那么这就是Fortify中的一个bug。也许通过将它们移动到
私有静态最终字符串
字段来将其更改为添加间接寻址,会使其不稳定。具体来说,从这个角度来看,
“字符串文字”
新字符串(“字符串文字”)
以及任何软件或个人,它声称有,但不知道它在说什么。我不确定下一次强化跑什么时候开始。作为一个实验,我将尝试两种方法,再加上@Thilo的静态决赛,看看哪种方法能让它安静下来。@hobbes\u child好的,完成后请告诉我。如果它不能解决警告,您可以报告一个bug。