【问题标题】:How to make Arraylist Member field safe from Race Condition in jsp file?如何使 Arraylist 成员字段免受 jsp 文件中的竞争条件的影响?
【发布时间】:2017-04-04 14:23:45
【问题描述】:

我正在使用 Fortify 工具,它指出一个问题为 Race Condition: Singleton Member Field in a jsp Page。它说: 类 rateUs.jsp 是一个单例,所以成员字段 arrayList 在用户之间共享。结果是一个用户可以看到另一个用户的数据。

下面是它指向问题的代码。

 <% 
ArrayList arrayList = null
arrayList = (ArrayList) request.getSession().getAttribute("SLIST"); 
%>

我需要在这里改变什么吗?

【问题讨论】:

  • AFAIK jsps 没有任何可变状态,因此它们是否是单例并不重要(尽管我们需要查看您的代码)。可能导致竞速条件的是使用存储在会话中的非头部安全列表:用户可以发出 2 个并行写入列表的请求,从而导致严重的错误(我们曾经有类似的 @ 987654322@ 其中 2 个并发写入导致两个线程中的无限循环。
  • 我希望这是一个简单的测试:以两个不同的用户身份登录并验证用户可以看到或看不到的内容。

标签: java jsp singleton race-condition fortify


【解决方案1】:

会话是隔离的,只有持有相应会话引用的特定用户才能访问。

但是,如果会话中的对象存储在其他人共享的变量中,则其他人无法看到(和更改)此数据。

更完整的代码会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2017-10-04
    • 2019-06-12
    相关资源
    最近更新 更多