簡體   English   中英

有沒有辦法清除服務器端OWIN /身份驗證數據?

[英]Is there a way to clear server side OWIN / authentication data?

在最近的安全掃描之后,info sec團隊表示他們不喜歡他們可以保存.AspNet.ApplicationCookie值,然后再次使用它,允許用戶訪問該站點。

閱讀后,我明白這是標准行為,但我必須找到一種方法,在簽署用戶時完全殺死會話。

我的理解有點薄,所以我的搜索很少。 有辦法解決這個問題嗎?

遲到的回復,但對於那些遇到這個問題:

我們通過添加驗證指紋的自定義屬性來處理此問題。 我們對登錄后面的任何頁面使用該屬性。

以下是如何實現這一目標的粗略示例。

指紋在登錄時創建並添加到緩存中:

    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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM