C# Nancy文档中描述的表单身份验证是否容易被会话劫持?

C# Nancy文档中描述的表单身份验证是否容易被会话劫持?,c#,authentication,session-cookies,nancy,C#,Authentication,Session Cookies,Nancy,我读了他的文件。据我所知,这里推荐的方法会导致终身会话ID: “标识符是将放入身份验证中的令牌 用于重新建立用户身份的cookie 即执行请求,这样您就不需要输入 每个请求的凭据。” 据我所知,“标识符”是大多数人所说的会话ID 同样重要的是要知道标识符应被视为 为其生成并将被重用的用户的永久 跨请求和应用程序会话 这真的是推荐的方法吗?如果我理解正确,这意味着会话ID永远不会更改,也永远不会过期。因此,会话ID相当于密码 在cookie中随每个请求重新传输 如果您一直按照文档进行操作,则可能

我读了他的文件。据我所知,这里推荐的方法会导致终身会话ID:

“标识符是将放入身份验证中的令牌 用于重新建立用户身份的cookie 即执行请求,这样您就不需要输入 每个请求的凭据。”

据我所知,“标识符”是大多数人所说的会话ID

同样重要的是要知道标识符应被视为 为其生成并将被重用的用户的永久 跨请求和应用程序会话

这真的是推荐的方法吗?如果我理解正确,这意味着会话ID永远不会更改,也永远不会过期。因此,会话ID相当于密码

  • 在cookie中随每个请求重新传输
  • 如果您一直按照文档进行操作,则可能以明文形式存储在数据库中
我知道我可以与Nancy以不同的方式实现这一点,但我的观点是,这种方法不应该在文档中解释为参考

因此,如果攻击者成功窃取该会话ID(例如通过XSS攻击),他将获得对系统的终身访问权

请纠正我,让我看看我思想中的错误

这个“标识符”就是大多数人所说的会话ID

不是。它有点像UserId。如文件所述:

我们已选择使用GUID作为标识符。原因是,使用类似用户名的id是一个潜在的漏洞,因为如果cookie加密受到某种程度的破坏,很容易通过猜测其他用户的用户名或id来欺骗他们的身份


他们只是使用分配给用户的GUID来提高安全性。当然,(基于cookie的)FormsAuthentication具有cookie的所有缺点。如果有人可以访问您的身份验证cookie,他们可以作为您进行身份验证。但是会话cookie和表单身份验证cookie是完全不同的东西,它们之间的区别非常清楚。

您所指的标识符不是会话id,而是一个不可预测的用户标识符,然后将其映射(如有必要)到后端的真实用户标识符。因此,如果有人以用户X的身份登录,并以某种方式对cookie进行解密、重新加密和重新签名,那么他们就不能将用户ID更改为“admin”或类似的内容,从而获得管理员访问权限(这就是ASP.Net Oracle攻击的工作原理)。它也是HttpOnly,因此不能通过XSS捕获,尽管从技术上讲,它可以通过XST捕获

创建和终止会话(并在必要时删除身份验证cookie)是一项完全不同的任务—确定是否接受、删除身份验证cookie或何时使用其他密码请求确认身份验证cookie的方式和时间取决于应用程序。这是一个常见的模式,一个站点会一直认为你“登录”,直到你做了一些“安全”,在这种情况下,它会要求你重新验证,如果你还没有这样做最近。
希望这是有道理的。

Ahh-这与南希无关。这与ASP.NET有关,OP是在询问南希的情况。@Phill:这就是为什么我不应该在凌晨1点以后访问南希的原因。谢谢你的提醒!尽管该链接是针对ASP.NET的,但您为我指明了正确的方向(auth cookies vs.session cookies),谢谢。@theDmi:我编辑了这篇文章,删除了ASP.NET特定的关于会话固定攻击的内容。但是,使用Firebug并运行
Nancy.Demo.authentication.Forms
project和检查cookie,您总能找到更多关于Nancy的身份验证cookie的信息。它创建了一个名为
\u ncsa
的加密cookie。感谢您的澄清,这帮了大忙。现在我将再次阅读该文档:-)。这意味着实际上没有会话ID,对吗?我唯一需要担心的是auth cookie,我通过Login()、Logout()等扩展方法控制它