对会话中检测进行故障诊断

当会话中检测失败时,可能有多个原因造成该问题的发生。

可能有这样的实例:扫描检测其不在会话中,并且不能成功验证其标记的会话中模式。在这种情况下,扫描日志将显示多个登录请求,直到扫描最终停止,并带有以下登录条目:“由于检测不在会话中,暂挂扫描”。

发生此问题的可能性有以下几种:

  1. 服务器停止响应:由于应用程序超负荷或暂时关闭,扫描可能无法及时从该应用程序得到响应。要进行测试,试着禁用“会话中检测”复选框,然后继续扫描。
  2. 必需的会话 cookie 或参数未被登录序列中的扫描自动检测:扫描将自动试着检测其认为与会话状态相关的登录序列中的 cookie 或参数(即,“ASP.NET_SessionId”、“JSESSIONID”)。这些将会在“登录会话标识”列表中列出。如果有未检测到的其他会话标识,请将其添加到“会话标识”列表,并试着继续扫描。如果不确定,请试着首先将登录序列中显示的全部添加,如果此时扫描仍能够在会话中,您就可以返回并除去部分标识,直到将特定的 cookie 或参数隔离。要弄明白哪些需要添加,请转至“登录会话标识”列表,将每个 URL 突出显示,然后单击查看 HTTP 请求按钮,并检查 cookie 和参数的 HTTP 头。
  3. 当不在序列中请求时,不可访问会话中页面:因为扫描会在扫描过程中定期轮询会话中页面,所以在与记录的登录序列相同的序列中没有必要对其进行访问时,会执行此操作。如果您怀疑造成扫描不能继续在会话中的原因是由此类型的配置所引起,那么请试着使用浏览器来通过探索序列进行测试,复制扫描用作会话中页面的 URL,继续对应用程序进行简单的探索,然后强制浏览有问题的页面。如果您无法在之前标记的响应中查看文本(例如,您被重定向到定制的错误页面),那么请试着选择其他页面作为会话中页面,直到找到允许进行此类型行为的页面。
  4. 检测的会话中页面是带有登录参数的 POST:如果扫描自动检测页面作为其会话中页面,并且您注意到在扫描过程中,其无法继续在会话中,那么请通过将其突出显示以及单击查看 HTTP 请求按钮,来检查标记的页面。如果页面包含用户名和密码参数,请试着选择列表中靠后的其他页面,在浏览器中标记其模式,然后继续扫描。如果没有其他可选择的页面,请试着重新记录登录序列,并在探索中包括一个额外的页面,然后将该页面标记为会话中页面。
  5. 会话中模式与实际响应不匹配。例如,您可能输入“注销”作为模式,但是有人更改了站点,目前该文本已“注销”。使用 HTTP 请求功能来确定预期响应“logout”和实际响应“log out”之间的差别。如有必要,请更改模式,并重新扫描。然后再次检查“HTTP 请求”响应。