6

我有一组 C# Selenium 测试需要删除设置了 HttpOnly 标志的 cookie。

不幸的是,DefaultSelenium.GetCookie()andDefaultSelenium.DeleteCookie()命令无法访问 cookie,因为它设置了 HttpOnly 标志。我已经通过手动删除标志来确认这一点,并检查随后对这些方法中的任何一个的调用是否能够愉快地操纵相关的 cookie。

有没有其他方法可以通过 Selenium .NET 客户端驱动程序来做到这一点?

欢迎所有想法!

4

1 回答 1

5

由于我无法通过客户端驱动程序执行此操作,因此我必须找到替代方法。幸运的是,正在测试的 Web 应用程序有一系列测试页面,这些页面允许与会话 cookie(我试图访问的 HttpOnly cookie)进行交互,因此我能够通过自动化这些页面来实现我的目标。

对于遇到此问题的其他任何人,这里有一个很好的答案,关于如何将 HttpOnly 刻录到 ASP.NET 中。

此外,这个 SO 答案指出了如何通过应用程序的 web.config 操作 HttpOnly,但需要注意的是它只能打开,不能关闭。

任何愿意为了测试目的而改变他们的应用程序的人都应该检查这个解决方法,基本上是改变 Global.asax 中的 Session_Start 方法以去除 HttpOnly 标志,以便客户端脚本可以访问。然而,这种解决方法只能在测试环境中使用,因为它打开了引入 HttpOnly 以关闭的安全漏洞 - 即 XSS 漏洞。Jeff Atwood在这里写了一篇很好的博客文章。

于 2010-05-27T07:53:54.043 回答