在保护 ASPXAUTH 和 ASP.NET_SessionId cookie 之后,这是正确的行为吗?

Posted

技术标签:

【中文标题】在保护 ASPXAUTH 和 ASP.NET_SessionId cookie 之后,这是正确的行为吗?【英文标题】:After securing ASPXAUTH and ASP.NET_SessionId cookies, is this the correct behavior? 【发布时间】:2019-07-13 11:11:10 【问题描述】:

通过渗透测试通知我们,我们的网站没有保护 ASPXAUTH 和 ASP.NET_SessionId cookie。

为了保护 cookie,我做了几处更改。

1) 将 requireSSL="true" 属性添加到 System.Web -> web.config 中的身份验证 -> 表单元素。 2) 在初始登录和注销时清除 ASP.NET_SessionId 和 ASPXAUTH cookie 的代码中,将它们设置为安全且仅限 HTTP。 3) 向 Application_EndRequest 方法 Global.asax 添加了代码 专门设置 ASP.NET_SessionId 和 ASPXAUTH cookie Response.Cookies 到 Secure 和 HttpOnly。

我不知道为什么第二个很重要,但是没有它,ASP.NET_SessionId cookie 永远不会在响应对象中显示为安全的。

使用 Chrome 开发人员工具,我在多个时间点截取了屏幕截图,其中一些行为让我感到意外。如果有人可以看看这个并让我知道事情是否正确,我将非常感激。

此屏幕截图是在清除网站的 cookie 后在初始页面加载时拍摄的: Upon initial page load

我觉得这两个 SessionId cookie 很奇怪,为什么有一个是安全的,一个不安全?

此截图为点击登录网站后截图:After clicking log in

这对我来说更没有意义,为什么请求中的 ASP.NET_SessionId cookie 没有标记为安全或 HttpOnly,这是预期的行为吗?我假设响应中没有发送 SessionId cookie 是正确的行为

此截图是在点击网站上的链接查看新页面后截取的:enter image description here

如果可能的话,这对我来说更没有意义。有问题的两个 cookie 在请求中发送,均未设置 HttpOnly 或 Secure。这是正确的行为吗?另外,响应中出现的 cookie 都不正确吗?

我在 *** 和 Google 上花了很多时间来尝试找到配置这些 cookie 的正确方法。我只是不知道我所做的是否正确,因为我不确定固定的实现应该是什么样子。

我们将不胜感激。

谢谢你, -内森

【问题讨论】:

【参考方案1】:

在 SO How to secure the ASP.NET_SessionId cookie? 上查看这个类似的帖子

您是否在会话开始事件期间设置 cookie 的安全标志?像这样。

protected void Session_Start(Object sender, EventArgs e)

// secure the ASP.NET Session ID only if using SSL
// if you don't check for the issecureconnection, it will not work.
if (Request.IsSecureConnection == true)
     Response.Cookies ["ASP.NET_SessionID"].Secure = true;

【讨论】:

这确实改变了一些行为,但我仍然不确定它是否正确。这是在初始页面加载之后:i.imgur.com/KSUISU1.jpg这是在单击登录之后:i.imgur.com/l7uxSPh.jpg这是在加载新页面之后:i.imgur.com/IcTkiav.jpg我担心第三张图片,因为这两个 cookie 都没有它们的 httpOnly 或安全标志设置。 不看代码很难判断。我建议在您操作的其他任何地方禁用代码。尝试逐步启用。另外,在测试之前,请尝试从 chrome 中清除 cookie。希望对你有用。 我已经做过很多很多次了。我要解决的问题不是我的代码是否正确。我正在尝试确定这种行为是否正确。尤其是更改页面请求中缺少 Secure 和 HttpOnly 标记。

以上是关于在保护 ASPXAUTH 和 ASP.NET_SessionId cookie 之后,这是正确的行为吗?的主要内容,如果未能解决你的问题,请参考以下文章

ASPXAUTH cookie 未保存

使用 protection=validation 解密 .ASPXAUTH Cookie

Simplemembership ASPXAUTH cookie 在两个单独的 Web 项目上进行验证

Forms身份验证的配置

注销 Web 表单身份验证不会删除服务器上的身份验证

权威等级保护和分级保护