gpt4 book ai didi

c# - ASP.NET WebForms 身份验证注销,Cookie 仍可用于访问站点

转载 作者:行者123 更新时间:2023-12-04 15:36:28 24 4
gpt4 key购买 nike

我一直在用头撞墙并在网上搜索这个,但我认为我在理解将用户从 asp.net webforms 应用程序中注销的整个过程时遇到了问题。问题:我能够登录到我的应用程序并且它使用 cookie,因此我在浏览器中设置了 cookie。这是配置表单例份验证部分,

<forms loginUrl="login.aspx" timeout="15" protection="All" name="Domain.MYDOMAIN" path="/" domain="mysite.local" cookieless="UseDeviceProfile"/> 

这里是前端控件

<li><asp:LoginStatus ID="LoginStatus1" runat="server" OnLoggedOut="OnLoggedOut" /></li>

在 OnLoggedOut 方法中我们做这样的事情。

protected void OnLoggedOut(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
/* Abandon session object to destroy all session variables */
HttpContext.Current.Session.Clear();
HttpContext.Current.Session.Abandon();
Response.Redirect("~/login.aspx");
}

这将从浏览器中清除 cookie。但是,如果在执行此操作之前,我复制了 Domain.MYDOMAIN = "what ever it would be"的 cookie 名称对值

并将其添加到 postman 电话中,它仍然显示我已登录!非常令人沮丧。当我登录时 enter image description here

我使用上面提到的注销按钮注销,cookie 被删除 enter image description here

然后我将那个 cookie 带到 Postman 并调用登陆/默认页面,它显示我仍然登录!!!
enter image description here

我一直在读到 cookie 与“票”有关,但我不确定如何在服务器端使该票过期。一旦用户单击注销,我不希望再次使用此 cookie 值来访问页面,即应用程序中的任何页面。任何帮助,将不胜感激!谢谢你!

旁注:我将 session 状态设置为 InProc

 <sessionState mode="InProc" />

最佳答案

用户通过用户名和密码进行身份验证,然后我们设置一个超时的 cookie,这个 cookie 让他登录。

即使您从一个浏览器中删除了 cookie,如果您仍然拥有它并重新放置它——您允许再次登录,因为 cookie 给出了“确定”的权限。

这不仅存在于 asp.net 上,而且存在于任何地方(Microsoft、google、Facebook)。


添加额外的安全层,避免有人窃取 cookie:

  • 第一步是仅对 cookie (*) 强制使用 SSL。 <httpCookies httpOnlyCookies="true" requireSSL="true" /> .使用它你很难甚至不可能窃取 cookie

  • 第二步是注销以将该 cookie 保存在数据库中,然后在每次请求时检查 cookie 是否已注销第三步也是检查 cookie 是否来自相同的浏览器 ID。

因此,您将 cookie 与浏览器数据连接起来,并带有用户按下注销的标志。

您在 global.asax 上进行检查

protected void Application_BeginRequest(Object sender, EventArgs e)

(*) 第一步:Can some hacker steal a web browser cookie from a user and login with that name on a web site?

困难的方法是添加数据库额外的保护层,并将 cookie 与我所说的其他用户信息、浏览器 ID 和标志(如果已注销)连接起来。主要思想是在服务器上保留您设置的经过身份验证的 cookie 并仔细检查它 - 现在您不这样做。

关于c# - ASP.NET WebForms 身份验证注销,Cookie 仍可用于访问站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59583491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com