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

是否需要对可公开访问的RESTAPI进行身份验证-仅限GET,rest,security,lumen,Rest,Security,Lumen,我使用Lumen构建了一个微API,它只有一个单一的GET方法,从数据库返回JSON数据 我添加了一个简单的中间件,强制GET请求在URL中包含“?key=[secretPassword]”,这样只有我提供密钥的人才能执行GET 这是我的第一个API-这足够安全措施吗 使用更多信息编辑: 数据不敏感,我不在乎人们是否发现了它,但我将把密钥移动到头中以获得额外的保护,我使用的是HTTPS 我添加了一个简单的中间件,强制GET请求在URL中包含“?key=[secretPassword]”,这样只有

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

我添加了一个简单的中间件,强制GET请求在URL中包含“?key=[secretPassword]”,这样只有我提供密钥的人才能执行GET

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

使用更多信息编辑: 数据不敏感,我不在乎人们是否发现了它,但我将把密钥移动到头中以获得额外的保护,我使用的是HTTPS

我添加了一个简单的中间件,强制GET请求在URL中包含“?key=[secretPassword]”,这样只有我提供密钥的人才能执行GET

很难给出一个完整的答案,因为还有一些未知数,但我正在尝试

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

  • 一般来说,不建议在url中添加机密,因为url最终会出现在缓存和日志中
  • 你肯定需要HTTPS。没有HTTPS,其他人可以监听HTTP请求和响应
  • 你打算如何把这把钥匙交给你的最终用户?你有什么安全的方法把它寄给他们吗
  • 如何创建随机关键点?有很多不好的方法可以做到这一点
在标题中,您还提出以下问题:

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

嗯。。。取决于你想保护自己不受什么伤害?是否有人可以调用API有关系吗?那么您可能不需要auth

我添加了一个简单的中间件,强制GET请求在URL中包含“?key=[secretPassword]”,这样只有我提供密钥的人才能执行GET

很难给出一个完整的答案,因为还有一些未知数,但我正在尝试

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

  • 一般来说,不建议在url中添加机密,因为url最终会出现在缓存和日志中
  • 你肯定需要HTTPS。没有HTTPS,其他人可以监听HTTP请求和响应
  • 你打算如何把这把钥匙交给你的最终用户?你有什么安全的方法把它寄给他们吗
  • 如何创建随机关键点?有很多不好的方法可以做到这一点
在标题中,您还提出以下问题:

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


嗯。。。取决于你想保护自己不受什么伤害?是否有人可以调用API有关系吗?那么您可能不需要身份验证。

在URL上有密码会泄露密码,即使在HTTPS流量上也是如此。改为使用授权标头。

在URL上使用密码会泄露密码,即使在HTTPS流量上也是如此。改为使用授权标头。

如果开销不太大,您可以在API前面设置API网关(Kong、Tyk、ApiGee等),这将使您能够灵活地处理任何类型的身份验证,或者在以后的时间内进行更多的验证


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

如果开销不太大,您可以在API前设置API网关(Kong、Tyk、ApiGee等),这将使您能够灵活地处理任何类型的身份验证,或者在以后的时间内处理更多的身份验证


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

严格的回答是-由您自己决定,您正在编写API。第二个问题是-我需要api auth(如果这是您决定的)这是正确的方法吗?如果您想要api auth,那么没有争议(如果这是一个真实的用例)-使用oauth。这不难理解,这可能是矫枉过正。HTTPs上的基本身份验证已经足够了。@pm100原来有一场辩论=)@Evert-lol-看起来是这样。我只是认为RESTAPI设计师应该从第一天开始养成良好的习惯。发明自己的安全技术“因为这只是我的开始”是“我们以后会解决这个问题”的滑铁卢,…“哦,我们刚刚丢失了10000000条用户记录”严格的回答是-这取决于你,你正在编写API。第二个问题是-我需要api auth(如果这是您决定的)这是正确的方法吗?如果您想要api auth,那么没有争议(如果这是一个真实的用例)-使用oauth。这不难理解,这可能是矫枉过正。HTTPs上的基本身份验证已经足够了。@pm100原来有一场辩论=)@Evert-lol-看起来是这样。我只是认为RESTAPI设计师应该从第一天开始养成良好的习惯。发明自己的安全技术“因为这只是我的开始”是“我们以后会解决这个问题”的滑梯,…“哦,我们刚刚丢失了10000000条用户记录”,感谢您回答了这么多未知问题。非常有用。我只是把密钥给了一些终端用户。数据不敏感,我不在乎人们是否发现了它,但我将把密钥移动到头中以获得额外的保护,我使用的是HTTPS。谢谢谢谢你回答这么多未知的问题。非常有用。我只是把密钥给了一些终端用户。数据不敏感,我不在乎人们是否发现了它,但我将把密钥移动到头中以获得额外的保护,我使用的是HTTPS。谢谢