【发布时间】: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 都不正确吗?
我在 StackOverflow 和 Google 上花了很多时间来尝试找到配置这些 cookie 的正确方法。我只是不知道我所做的是否正确,因为我不确定固定的实现应该是什么样子。
我们将不胜感激。
谢谢你, -内森
【问题讨论】:
标签: security cookies authorization sessionid httponly