是否有可能查看HttpSession属性与客户端利用



我最近开始维护一个在线系统。它使用JSF和PrimeFaces作为前端,并使用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>

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);
        // ...
    }
}

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

  • 会话存储在服务器端,没有客户端黑客可以访问这些数据,除非它利用JSF实现的安全漏洞,这是相当罕见的
  • 如果黑客能够破解服务器组件,他肯定会获利从数据库访问用户数据,当它不存储在用户会话
  • 您的担忧是可以理解的,但是您应该关注用户代码缺陷或知道库缺陷而不是应用程序设计

相关内容

  • 没有找到相关文章

最新更新