是否可以通过客户端漏洞查看HttpSession属性?

ufi*_*fis 5 java jsf httpsession primefaces jsf-2

我最近开始维护在线系统。它在前端使用带有PrimeFaces的JSF,并在Java后端使用。JSF对我来说是一种新技术。

在登录过程中,整个用户表(包括明文密码(将很快得到修复))被加载到HttpSession属性中,并在系统的其他部分中引用。该系统的用户数不到50,因此数据大小对我来说不是什么大问题。

但是,所有用户数据都驻留在会话中这一事实令人担忧。

我是否不必担心,还是有办法通过客户端漏洞利用来访问此信息?我还有其他理由可以作为紧急改写该机制的理由吗?

下面的缩写代码:

login.xhtml

<p:inputText id="username" value="#{userBean.userName}" name="username"></p:inputText>
<p:password id="password" value="#{userBean.password}"></p:password>
<p:commandButton id="loginSubmit" value="Login" action="#{userBean.auth}"></p:commandButton>
Run Code Online (Sandbox Code Playgroud)

UserBean.java

@ManagedBean(name = "userBean")
@SessionScoped
public class UserBean {
    public String auth() {
        // ...
        FacesContext fctx = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) fctx.getExternalContext().getSession(true);
        HashMap<Long, UserDetail> usersMap = dbBean.getAllUserDetails();
        session.setAttribute("usersMap", usersMap);
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*ure 3

虽然评论回答了您的问题,但让我们总结一下:

  • 会话存储在服务器端,客户端黑客无法访问这些数据,除非利用 JSF 实现中的安全缺陷,这种情况很少见
  • 如果黑客能够破解服务器组件,他肯定会从数据库中获取用户数据,只要这些数据未存储在用户会话中
  • 您的担忧是可以理解的,但您应该关注用户代码缺陷或了解库缺陷而不是应用程序设计