我正在构建一个将从Web和移动平台上使用的API .
我想要一些帮助和建议 improve my bearer token authorization
.
身份验证
目前的身份验证非常简单 . 我会假设发送的凭据是正确的:
-
向API endpoints 发送电子邮件和密码
-
存储具有到期日期的用户令牌
-
使用用户授权令牌回复客户端
授权
然后,任何其他行动授权包括:
-
发送授权承载"token"标头
-
确定是否允许令牌所有者执行操作
-
完成操作
关注
我担心的是 if anyone just review the request headers, the bearer token could easily be discovered . 这将允许用户从任何其他客户端做任何有害的请求 .
大多数可以故意做坏的请求在应用程序上下文中完全有效 . 因此,通过请求参数过滤它们并不容易 .
可能的修复
我一直在考虑 send on headers 的可能性:
-
用户授权令牌
-
发送日期或任何其他参数
-
哈希(令牌,其他参数)
在服务器上,我将单独比较每个参数,然后比较加密的哈希 .
因此,如果有人发送具有不同日期的相同哈希,则很容易将其检测为入侵者 .
您还有其他建议可以使通信更安全吗?
2 回答
您考虑使用日期和哈希的解决方案不会对基本对手添加任何安全性 . 令牌的到期应该在数据库中的服务器端进行管理 .
Oauth 2威胁模型告诉您如何在section 4.6.1中保护您的令牌 .
在网络上可见的令牌必须在其中加密ip和用户代理(如果是网站) . 这种方式即使有人拥有你的令牌,他们也无法通过相同的IP和浏览器之外的任何其他方式发送它 .