首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >REST API安全审查

REST API安全审查
EN

Stack Overflow用户
提问于 2015-12-13 22:27:17
回答 2查看 71关注 0票数 0

我正在与一些已经开发了一段时间的产品的人合作,不同平台上的应用程序调用web服务,他们将其用作存储数据的API。

他们开发的安全模型与我使用过的其他模型并不完全不同,但它在很多方面都是非常不标准的。首先,它们需要每个客户端都有一个API密钥,这是有意义的。然后有一些方法,你可以在没有身份验证的情况下点击,很好。但是,当您需要执行身份验证更新时,它们是这样做的:

首先,您使用用户名/密码调用一个端点,以在服务器端获得一个“会话”。此会话id在成功登录后返回给客户端。您所做的其他需要身份验证的操作都需要一个会话id参数,这是必需的,其思想是,如果您没有提供有效的会话id,则拒绝您的请求。

我花了一段时间使用OAuth进行身份验证,并为另一个项目上经过身份验证的请求要求令牌,所以对我来说这感觉很弱。一个明显的问题是,有人可能会通过暴力攻击来劫持别人的会话,但我预计他们会认为这是不太可能的。他们的会话Id是GUID,我认为GUID很大,在一定程度上很难破解,而且你还必须找到一个已经建立的有效会话。

我是否遗漏了一些显而易见的东西,或者这是否足够好?如果我不能证明这是真的有必要的话,我不想对此大惊小怪,并提议在平台范围内迁移到OAuth。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2015-12-13 22:42:58

这听起来是可以接受的,只要确保GUID确实是用强大的随机引擎生成的,并且不能被暴力强制,并且它们在一段时间不活动后就会过期。

票数 1
EN

Stack Overflow用户

发布于 2015-12-14 05:24:00

首先,要求API密钥是一种身份验证形式。它对客户端而不是用户进行身份验证。

在所有客户端上都需要API密钥会增加丢失密钥的风险(尤其是当存储在不受信任的客户端上时,如移动设备)。

使用会话标识符并不是不安全的,但它确实需要为每个调用与颁发者交谈(并可能执行数据库查找)。

安全令牌可以携带语义信息(声明),并且可以在被调用的服务器上进行验证(验证签名),从而提高了可扩展性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34252143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档