是否需要对可公开访问的REST API进行身份验证 - 仅限GET

时间:2018-01-23 22:55:54

标签: rest security lumen

我使用Lumen构建了一个微API,它只有一个单一的GET方法,它从数据库返回JSON数据。

我添加了一个简单的中间件,强制GET请求有"?key = [secretPassword]"在URL中,只有我给密钥的人才能执行GET。

这是我的第一个API - 这是否足够安全措施?

使用更多信息进行编辑: 数据不敏感,我不会在乎人们是否发现它,但我会将密钥移到标题中以获得额外的保护,而我正在使用HTTPS。

3 个答案:

答案 0 :(得分:3)

  

我添加了一个简单的中间件,强制GET请求有"?key = [secretPassword]"在URL中,只有我给密钥的人才能执行GET。

很难给出一个完整的答案,因为有一些未知数,但是我试了一下。

关于这种方法的一些注意事项:

  • 一般情况下,不建议将秘密放入网址,因为网址最终会出现在缓存和日志中。
  • 您肯定需要HTTPS。没有HTTPS,其他人可以监听HTTP请求和响应。
  • 您如何获得最终用户的这个密钥?你有一些安全的方式发送给他们吗?
  • 你是如何创建随机密钥的?有很多不好的方法可以做到这一点。

在标题中你也会问:

  

是否需要对可公开访问的REST API进行身份验证

嗯......取决于你想要保护自己的东西?如果有人可以调用API,这有关系吗?然后你可能不需要auth。

答案 1 :(得分:2)

在URL上输入密码即使在HTTPS流量上也会泄露密码。请改用Authorization标头。

答案 2 :(得分:1)

如果不是太多开销,你可以在你的API前放置一个API网关(Kong,Tyk,ApiGee等),这将使你能够灵活地处理任何类型的身份验证或更重要的是时间到了。

通常,根据信息的敏感性或商业案例,GET API有时也会保持开放状态。