防止令牌共享的最佳方法是啥?

Posted

技术标签:

【中文标题】防止令牌共享的最佳方法是啥?【英文标题】:What is the best way to prevent token Sharing?防止令牌共享的最佳方法是什么? 【发布时间】:2016-12-19 00:44:34 【问题描述】:

我正在寻找阻止客户共享 oauth 令牌的想法,即创建令牌的客户只能是使用它的客户。在服务器端可以做些什么来防止该客户与其他人共享令牌?

【问题讨论】:

类似于Preventing registered users from sharing passwords? 【参考方案1】:

有几个 IETF RFC/草案试图提供一种方法来验证客户端是令牌的“所有者”。 这些规范与 OAuth2 框架协议相关,但是它们可以在任何其他令牌交换上下文中实现。

他们是:

MAC Tokens:OAuth 2.0 Message Authentication Code (MAC) Tokens(好像被废弃了) POP 令牌: OAuth 2.0 Proof-of-Possession (PoP) Security Architecture OAuth 2.0 Proof-of-Possession: Authorization Server to Client Key Distribution RFC7800: Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)

Hawk Tokens 的另一个有趣协议:参见 https://github.com/hueniverse/hawk(Eran Hammer 是 OAuth2 贡献者)

如您所见,所有这些规范都依赖于客户端签名的请求。这似乎是验证客户端是否允许使用令牌的最佳方式。任何其他验证(例如 IP 地址、用户代理、设备 ID...)都不可靠,因为它们可能会被欺骗。

【讨论】:

【参考方案2】:

在我自己看来,防止令牌共享的最好方法是获取电脑的机器 ID、硬件序列号等,然后将其作为令牌。在此之前将收集机器 ID 注册到您的数据库。除了注册机,没有人可以访问您的网络服务。

否则人员 id,可用于搜索数据库中是否存在,我的意思是注册人员 id,然后首先验证他们是否已注册,但如果此人将人员 id 提供给其他人,这可能是一个问题。

希望对你有帮助

【讨论】:

以上是关于防止令牌共享的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 CodeIgniter 中防止 SQL 注入的最佳方法是啥 [重复]

在 Linux 上防止内存不足 (OOM) 冻结的最佳方法是啥?

锁定文件以防止多个用户访问它的最佳方法是啥

防止用户在后台处理时单击表单上的任何内容的最佳方法是啥? [关闭]

防止机器人向您的博客发送垃圾邮件的最佳方法是啥?

Windows.alert() 防止访问/数据进入电子反应应用程序中的文本输入字段。处理 windows.alert 的最佳方法是啥?