1

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

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

我可以看到我的节点 1 正在设置这个 cookie。我怎样才能为节点 2 欺骗它?

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

3 回答 3

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

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

于 2015-04-13T20:44:13.510 回答
0

Late answer, but you can use Fiddler. Run Fiddler alongside your application, then enable breakpoints before requests (Rules -> Automatic Breakpoints -> Before Requests). Make a query to a server you want. It will freeze before executing the request and on the top right you can modify (spoof) the cookies by right-clicking the session ID and entering whatever values you want.

Hope this is helpful. I ran across this question by chance researching another issue.

于 2014-03-24T22:21:10.280 回答
0

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

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

于 2013-01-29T17:14:39.273 回答