2017-04-04 28 views
0

我正在使用Fortify工具,并将其指向一个问题作为竞争条件:单一成员字段在jsp页面中。它说: 类rateUs.jsp是一个单例,所以成员字段arrayList在用户之间共享。结果是一个用户可以看到另一个用户的数据。如何使Arraylist Member字段在jsp文件中不受Race Condition影响?

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

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

我需要在这里改变一些东西吗?

+0

AFAIK jsps没有任何可变状态,因此它们是单身或不重要(我们需要查看您的代码)。可能导致赛车状况的是使用存储在会话中的非安全列表:用户可以发出2个并行写入列表的请求,从而导致令人讨厌的错误(我们曾经有过类似于' HashMap',其中2个并发写入导致两个线程中无限循环)。 – Thomas

+0

我期望这是一个简单的测试:作为两个不同的用户登录并验证用户可以或不可以看到的内容。 –

回答

-1

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

但是,如果来自会话的对象存储在其他人共享的变量中,则该数据可能会被其他人看到(或改变)。

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

相关问题