如何欺骗会话cookie来测试会话复制

时间:2013-01-29 13:45:01

标签: java session jboss

如何欺骗会话cookie以测试会话复制?

我在两个节点上使用Jboss,我想确认如果一个节点发生故障,我的会话数据就在另一个节点中。

我可以看到我的节点1正在设置此cookie。如何为节点2欺骗它?

JSESSIONID=3rsZ87MxC7EeukilWW8za7T-.node1; path=/hsr-test; domain=xxxx.xxxx.dev

3 个答案:

答案 0 :(得分:1)

这是一个迟到的回复,但是因为我在搜索这个问题而添加了。

这是一个简单的会话get / put jsp脚本

    <html>
    <body>

        <a href="testsession.jsp?action=put">put</a>
        <a href="testsession.jsp?action=get">get</a>
    <%
        String action = request.getParameter("action");
        if ( null != action && "put".equals(action) ) {
    %>
            <h2>Set Current Time</h2>
    <%
            System.out.println( "Putting date now" );
            session.setAttribute("current.time", new java.util.Date());
    %>
            The time is set to <%= session.getAttribute("current.time") %>
    <% } else { %>
            <h2>Get Time</h2>
    <%
            System.out.println( "Getting date now" );
    %>
            The time is <%= session.getAttribute("current.time") %>
    <% } %>

    <br>
    <br>
    server: <%=request.getServerName() %>

    <br>
    <br>
    session: <%= session.getId() %>

    </body>
    </html>

如果您在命令行中,则可以在两个节点上使用它:

curl --cookie "JSESSIONID=ZWarGbkuDUoUuT-iOjYIATN+.2e84d3e9-3497-3e74-9604-a45f36cad465;"  http://node1/your_test_page

curl --cookie "JSESSIONID=ZWarGbkuDUoUuT-iOjYIATN+.2e84d3e9-3497-3e74-9604-a45f36cad465;"  http://node2/your_test_page

您将在浏览器和两个命令行测试中看到返回的时间。

答案 1 :(得分:0)

只要应用程序在群集中运行并且<distributable>文件中设置了WEB-INF\web.xml,就会默认在JBoss中执行会话复制。

您可以通过登录到群集中每个节点的jmx-console来验证是否已复制会话,并为printCacheDetails()jboss.cache MBean调用方法ha-partition, cache-config。应分别为节点打印会话数据。

答案 2 :(得分:0)

迟到的答案,但你可以使用Fiddler。在您的应用程序旁边运行Fiddler,然后在请求之前启用断点(规则 - &gt;自动断点 - &gt;请求之前)。查询所需的服务器。它会在执行请求之前冻结,在右上角,你可以通过右键单击会话ID并输入你想要的任何值来修改(欺骗)cookie。

希望这有帮助。我偶然地研究了另一个问题。