有没有办法清除服务器端 OWIN/身份验证数据?

在最近的安全扫描之后,信息安全团队表示他们不喜欢这样的事实,即他们可以保存 .AspNet.ApplicationCookie 值,然后再次使用它允许用户访问该站点。

阅读之后,我明白这是标准行为,但我必须找到一种方法在用户注销时完全终止会话。

我的理解有点薄,所以我的搜索很少。有办法解决这个问题吗?


qq_花开花谢_0
浏览 133回答 1
1回答

开满天机

迟到的回复,但对于遇到此问题的人:我们通过添加一个验证指纹的自定义属性来处理这个问题。我们将该属性用于登录后的任何页面。以下是如何实现这一目标的粗略示例。指纹在登录时创建并添加到缓存中:&nbsp; &nbsp; private void OwinSignIn(tblUser user)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; var thumbPrint = Guid.NewGuid();&nbsp; &nbsp; &nbsp; &nbsp; var claims = new List<Claim>&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ....&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new Claim(ClaimTypes.Thumbprint, thumbPrint.ToString())&nbsp; &nbsp; &nbsp; &nbsp; };&nbsp; &nbsp; &nbsp; &nbsp; MemoryCache.Default.Set(thumbPrint.ToString(), true, new CacheItemPolicy() { AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(60) });}该属性然后查找此指纹并相应地执行操作:public class ValidateThumbprint : FilterAttribute, IAuthorizationFilter{&nbsp; &nbsp; public void OnAuthorization(AuthorizationContext filterContext)&nbsp; &nbsp; var identity = (ClaimsIdentity)filterContext.HttpContext.User.Identity;&nbsp; &nbsp; var thumbPrint = identity.Claims?.Where(s => s.Type == ClaimTypes.Thumbprint).First().Value;&nbsp; &nbsp; if (thumbPrint != null)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if (MemoryCache.Default.Contains(thumbPrint))&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; // handle invalid thumbprint}我不确定这是否是最好的方法和最安全的方法,但它确实会阻止在注销后保存和重新使用 cookie。
打开App,查看更多内容
随时随地看视频慕课网APP