我正在构建一个将从Web和移动平台上使用的API.
我想要一些帮助和建议,以提高我的持票人令牌授权.
认证
目前的身份验证非常简单.我会假设发送的凭据是正确的:
>向API端点发送电子邮件和密码
>存储具有到期日期的用户令牌
>使用用户授权令牌回复客户端
授权
然后,任何其他行动授权包括:
>发送授权承载“令牌”标头
>确定是否允许令牌所有者执行操作
>完成操作
关心
我担心的是,如果有人只查看请求标头,则可以轻松地发现承载令牌.这将允许用户从任何其他客户端做任何有害请求.
大多数可以故意做坏的请求在应用程序上下文中完全有效.因此,通过请求参数过滤它们并不容易.
可能的修复
我一直在考虑发送标题的可能性:
>用户授权令牌
>发送日期或任何其他参数
>哈希(令牌,其他参数)
在服务器上,我将单独比较每个参数,然后比较加密的哈希值.
因此,如果有人发送具有不同日期的相同哈希,则很容易将其检测为入侵者.
您还有其他建议可以让沟通更安全吗?
最佳答案 您考虑使用日期和哈希的解决方案不会对基本对手添加任何安全性.令牌的到期应该在数据库中的服务器端进行管理.
Oauth 2威胁模型告诉您如何在section 4.6.1中保护您的令牌.