Java 屏幕重复时会话ID失败

Java 屏幕重复时会话ID失败,java,jsp,session-state,hidden-field,sessionid,Java,Jsp,Session State,Hidden Field,Sessionid,我不得不向应用程序添加一个唯一的会话ID,以防止跨站点请求伪造。 为此,我在会话启动时实现了一个唯一的会话ID。该会话ID作为隐藏值存储在会话中以及JSP上应用程序的每个页面上。我创建了一个方法,然后比较这两种方法,如果它们不相同,就会出现一个错误屏幕。这一切都很好。我的问题是,每当我复制URL并粘贴它以创建新窗口或选项卡时,页面上的会话ID为空,并导致错误页面标记。我是不是错过了一些很容易的事情 任何帮助或指针都非常合适页面中生成的会话ID似乎取决于先前请求发布的会话ID,而不是存储在服务器端

我不得不向应用程序添加一个唯一的会话ID,以防止跨站点请求伪造。 为此,我在会话启动时实现了一个唯一的会话ID。该会话ID作为隐藏值存储在会话中以及JSP上应用程序的每个页面上。我创建了一个方法,然后比较这两种方法,如果它们不相同,就会出现一个错误屏幕。这一切都很好。我的问题是,每当我复制URL并粘贴它以创建新窗口或选项卡时,页面上的会话ID为空,并导致错误页面标记。我是不是错过了一些很容易的事情


任何帮助或指针都非常合适

页面中生成的会话ID似乎取决于先前请求发布的会话ID,而不是存储在服务器端的会话ID。您可以发布将会话ID写入隐藏字段的代码吗?会话ID被创建并添加为属性,在每个jsp上,此代码被称为:“HttpSession thisSession=request.getSession;String sessionID=thisSession.getAttributeSESSIONID.toString;'我想我知道你的意思。它可能是我正在与服务器端值进行比较的值。我会调查一下的。谢谢如果您试图阻止会话劫持,您应该在会话中存储IP和用户代理,并检查每个请求中的请求是否与会话中的请求匹配。仅凭您所做的是不够的。请注意基于ip的会话id,好像有人试图在没有正确ip重写的情况下从基于NAT的网络查看您的站点,该网络中的每个人都将被标识为同一会话。