为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
qq_花开花谢_0 2022-11-21 20:11:44
在最近的安全扫描之后,信息安全团队表示他们不喜欢这样的事实,即他们可以保存 .AspNet.ApplicationCookie 值,然后再次使用它允许用户访问该站点。阅读之后,我明白这是标准行为,但我必须找到一种方法在用户注销时完全终止会话。我的理解有点薄,所以我的搜索很少。有办法解决这个问题吗?
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

迟到的回复,但对于遇到此问题的人:


我们通过添加一个验证指纹的自定义属性来处理这个问题。我们将该属性用于登录后的任何页面。


以下是如何实现这一目标的粗略示例。


指纹在登录时创建并添加到缓存中:


    private void OwinSignIn(tblUser user)

    {

        var thumbPrint = Guid.NewGuid();

        var claims = new List<Claim>

        {

            ....

            new Claim(ClaimTypes.Thumbprint, thumbPrint.ToString())

        };



        MemoryCache.Default.Set(thumbPrint.ToString(), true, new CacheItemPolicy() { AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(60) });

}

该属性然后查找此指纹并相应地执行操作:


public class ValidateThumbprint : FilterAttribute, IAuthorizationFilter

{

    public void OnAuthorization(AuthorizationContext filterContext)


    var identity = (ClaimsIdentity)filterContext.HttpContext.User.Identity;

    var thumbPrint = identity.Claims?.Where(s => s.Type == ClaimTypes.Thumbprint).First().Value;


    if (thumbPrint != null)

    {

        if (MemoryCache.Default.Contains(thumbPrint))

        {

            return;

        }

    }

        // handle invalid thumbprint

}

我不确定这是否是最好的方法和最安全的方法,但它确实会阻止在注销后保存和重新使用 cookie。


查看完整回答
反对 回复 2022-11-21
  • 1 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号