Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
API安全,不带用户帐户_Api_Security - Fatal编程技术网

API安全,不带用户帐户

API安全,不带用户帐户,api,security,Api,Security,上周,有人自动化了我们的消息API,向随机的人发送了10000条消息。我们计划用JWT提供安全性,但我们没有强制用户身份验证系统 我们考虑过使用1小时到期的代币,但这感觉有点多余。在这种情况下,使用JWT的最佳方法是什么 一个简单的公开api示例是-通过短信将应用程序链接发送到手机号码。因此,我的日常工作包括在手机领域开发处理此类事情的产品。如果我在回答你的问题时添加一个link(),它完全算作工作,对吗 我有几点建议/意见 如果可能的话,要做的第一件事是避免出现必须信任客户端上运行的代码的情况

上周,有人自动化了我们的消息API,向随机的人发送了10000条消息。我们计划用JWT提供安全性,但我们没有强制用户身份验证系统

我们考虑过使用1小时到期的代币,但这感觉有点多余。在这种情况下,使用JWT的最佳方法是什么


一个简单的公开api示例是-通过短信将应用程序链接发送到手机号码。

因此,我的日常工作包括在手机领域开发处理此类事情的产品。如果我在回答你的问题时添加一个link(),它完全算作工作,对吗

我有几点建议/意见

如果可能的话,要做的第一件事是避免出现必须信任客户端上运行的代码的情况。总有可能有人会破坏它并访问您的API

您的系统没有用户身份验证,因此尝试使用该身份验证来保护API的选项不可用

获得某种级别的保护的最简单方法是添加一个嵌入到客户机中的API密钥。您可能认为尝试使用它的第一种方法是将它与API请求一起发送到标头中。然后在服务器中检查API密钥是否存在。问题是,如果有人获得了您的客户机,他们可以检查流量并从其中一个HTTP请求中提取密钥

您可以使用HTTPS保护与服务器的连接,但如果有客户机,那么对某些人来说,MITM连接仍然相对容易。连接有助于实现这一点,但如果有人有足够的决心,他们可以破解执行固定的二进制文件或javascript

理想情况下,您希望避免直接发送身份验证信息。您可以通过在客户端中嵌入一个秘密以及API密钥来实现这一点。您将使用该密码对发送到服务器的请求进行签名。您可以使用API机密作为HMAC函数的密钥来计算消息体的HMAC。在服务器上验证HMAC时,可以使用API密钥标识要使用的机密。这样做的好处是,您永远不会通过HTTP发送秘密。但是仍然有可能从客户端窃取密钥。这里有一个来自security.stackexchange.com的相关问题

您可以尝试通过在代码中混淆来隐藏秘密,但这取决于您的客户端使用的语言,其效果可能会有所不同

在这一点上,您可能不得不停下来考虑访问API的重要性和价值,以及您希望在确保API中花费多少工程费。你还必须考虑有人可能会投入多少工作来闯入你的系统。


如果你非常感兴趣的话,也有一些商业解决方案覆盖了这一领域的一部分,但这些都需要现金。我的同事写了一篇文章,从移动的角度更详细地介绍了这些东西,这是我们的小利基。

你打算从哪里获得JWT?我猜你想用它来授权访问你的API?是的,可能在页面加载时,我会调用API来获取JWT。现在我在Nginx设置中使用了速率限制,如果来自同一个IP的请求太多,它将开始删除并最终阻止它。一篇好文章——我完全忘了提到这一点。我很高兴你自己找到了!谢谢:)这是你提供的好信息。也将尝试实施一些。