在servlet中强化竞争条件

时间:2015-06-25 17:54:13

标签: java servlets fortify

我得到了几个类似代码行的以下摘要:

  

LabResult类是一个单例,因此成员字段testname是   用户之间共享。结果是一个用户可以看到另一个用户   用户的数据。

这是代码行:

public void setTestname(String testname) {
    this.testname = testname;
}

我有57个这样的错误,因为几乎每种形式都会发生这种错误。这里真的有安全错误吗?

2 个答案:

答案 0 :(得分:2)

我认为您展示的代码是类LabResult的一部分。从类的名称来看,我猜你创建的不仅仅是该类的一个对象,所以你不想使用单例(这是一个仅限于自身的一个实例的类)。否则,一个用户将设置该类中的字段,然后另一个用户将覆盖该数据,然后第一个用户将获取其他用户的数据。可能不是你想要的。

答案 1 :(得分:0)

基本上任何实例变量都应该是常量,即为“静态最终变量”,但是如果您的实例变量没有最终值,我们可以声明您的测试名称如下

private static volatile testname;

详细信息可以在这里找到。 Race condition - field member issue