如何欺骗会话cookie以测试会话复制?
我在两个节点上使用Jboss,我想确认如果一个节点发生故障,我的会话数据就在另一个节点中。
我可以看到我的节点1正在设置此cookie。如何为节点2欺骗它?
JSESSIONID=3rsZ87MxC7EeukilWW8za7T-.node1; path=/hsr-test; domain=xxxx.xxxx.dev
答案 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。
希望这有帮助。我偶然地研究了另一个问题。