是否需要对可公开访问的 REST API 进行身份验证 - 仅获取
Is there any need for authentication for a publicly accessible REST API - GET only
我使用 Lumen 构建了一个微型 API,它只有一个单一的 GET 方法,returns JSON 来自数据库的数据。
我添加了一个简单的中间件,强制 GET 请求在 URL 中包含“?key=[secretPassword]”,因此只有我提供密钥的人才能执行 GET。
这是我的第一个 API - 这些安全措施是否足够?
编辑更多信息:
数据不敏感,我不在乎是否有人找到它,但我将把密钥移到 headers 中以获得额外保护,并且我正在使用 HTTPS。
I added a simple middleware that forces the GET request to have "?key=[secretPassword]" in the URL so only people I give the key can perform the GET.
很难给出一个完整的答案,因为有一些未知数,但我试一试。
关于这种方法的一些说明:
- 通常不建议将机密放在 url 中,因为 url 最终会出现在缓存和日志中。
- 您绝对需要 HTTPS。如果没有 HTTPS,其他人可以监听 HTTP 请求和响应。
- 您将如何获得 end-users 的密钥?您有安全的方式将其发送给他们吗?
- 您如何随机创建密钥?有很多不好的方法可以做到这一点。
标题中你还问这个:
Is there any need for authentication for a publicly accessible REST API
嗯...取决于您要保护自己免受什么侵害?是否有人可以调用 API 有关系吗?那么你可能不需要授权。
在 URL 上设置密码会泄露密码,即使在 HTTPS 流量上也是如此。请改用授权 header。
如果开销不是太大,您可以在 API 前面设置一个 API 网关(Kong、Tyk、ApiGee 等),这样您就可以灵活地处理任何身份验证的类型,或者就此而言更及时。
通常根据信息的敏感性或业务案例,GET API 有时也会保持打开状态..
我使用 Lumen 构建了一个微型 API,它只有一个单一的 GET 方法,returns JSON 来自数据库的数据。
我添加了一个简单的中间件,强制 GET 请求在 URL 中包含“?key=[secretPassword]”,因此只有我提供密钥的人才能执行 GET。
这是我的第一个 API - 这些安全措施是否足够?
编辑更多信息: 数据不敏感,我不在乎是否有人找到它,但我将把密钥移到 headers 中以获得额外保护,并且我正在使用 HTTPS。
I added a simple middleware that forces the GET request to have "?key=[secretPassword]" in the URL so only people I give the key can perform the GET.
很难给出一个完整的答案,因为有一些未知数,但我试一试。
关于这种方法的一些说明:
- 通常不建议将机密放在 url 中,因为 url 最终会出现在缓存和日志中。
- 您绝对需要 HTTPS。如果没有 HTTPS,其他人可以监听 HTTP 请求和响应。
- 您将如何获得 end-users 的密钥?您有安全的方式将其发送给他们吗?
- 您如何随机创建密钥?有很多不好的方法可以做到这一点。
标题中你还问这个:
Is there any need for authentication for a publicly accessible REST API
嗯...取决于您要保护自己免受什么侵害?是否有人可以调用 API 有关系吗?那么你可能不需要授权。
在 URL 上设置密码会泄露密码,即使在 HTTPS 流量上也是如此。请改用授权 header。
如果开销不是太大,您可以在 API 前面设置一个 API 网关(Kong、Tyk、ApiGee 等),这样您就可以灵活地处理任何身份验证的类型,或者就此而言更及时。
通常根据信息的敏感性或业务案例,GET API 有时也会保持打开状态..