安全令牌到期

时间:2010-10-08 22:28:51

标签: c# security

我正在我的应用程序中实现安全令牌功能。您可以指定到期时间和/或最大使用次数。

如果同时指定了两个条件,则检查两个条件,如果指定了其中一个条件,则只检查该条件。

我的问题是,我应该如何处理令牌存在但没有到期时间或最大值的情况?

是否应对用户进行身份验证,未经过身份验证或是否应抛出异常。

 if (this.ExpireTime.HasValue && this.MaxUses.HasValue)
        retval = DateTime.Now < this.ExpireTime.Value && this.Counter < this.MaxUses.Value;
    else if (this.ExpireTime.HasValue)
        retval = DateTime.Now < this.ExpireTime.Value;
    else if (this.MaxUses.HasValue)
        retval = this.Counter <= this.MaxUses.Value;
    else
    {
       throw new ApplicationException("Invalid AuthToken: ExpireTime And MaxUses are null") 
    }

2 个答案:

答案 0 :(得分:0)

您需要选择不过期的含义。鉴于您的应用程序及其用例的目的,令牌应该永久有效吗?或者更适合创建最大到期/最大使用次数?

答案 1 :(得分:0)

如果不存在所有信息,则应抛出“无效的authtoken”异常。令牌应始终过期,例如,如果会话ID未使其违反CWE-613。这些系统背后的安全性是Cryptographic Nonce,如果它们没有到期,那么最终攻击者可以猜出它的价值。

相关问题