【发布时间】:2020-12-13 00:02:13
【问题描述】:
我正在使用spring mvc 开发一个网络应用程序。我将关于我的用户的个人资料数据放在一个 session 变量中。
for( AdminProfil ap : admin.getAdminProfils()){
if(ap.getProfil().getNomProfil().equals("root")){
session.setAttribute( "root", true );
}
else if(ap.getProfil().getNomProfil().equals("saisie")){
session.setAttribute( "saisie", true );
}
else if(ap.getProfil().getNomProfil().equals("controle")){
session.setAttribute( "controle", true );
}
else if(ap.getProfil().getNomProfil().equals("validation")){
session.setAttribute( "validation", true );
}
}
在我的jsp 页面中:
<c:if test="${ sessionScope['saisie'] }">
......
</c:if>
- 我想知道
session变量是否可以被以下之一修改 我的用户或其他想要破解我的网络应用程序的人? - 如果可以修改会话,我可以使用哪些其他解决方案来阻止用户更改其个人资料?
- 在我的情况下可以使用会话变量还是使用 cookie 更好?
【问题讨论】:
-
这是骗人的? stackoverflow.com/questions/3798532/can-session-value-be-hacked(这里提到了一个缺陷——如果你向别人的计算机发送一些东西,那台计算机几乎可以用你发送的数据做它想做的事情——包括忽略 cookie 超时......)
-
如果您的问题是“用户能否修改会话中存储的数据”,答案是否定的。会话存储在服务器中,其内容不会发送到客户端。仅在 cookie 中向客户端发送会话 ID。
-
谢谢,但我的问题的第三点呢?在我的情况下,在会话中存储数据比 cookie 更好?
-
第三点是使用和误用。如果用户数据很小,那很好。如果您使用大量用户数据(包括照片和视频)污染会话,则 tomcat 可能会因 OOM 而退出。
标签: java spring session spring-mvc