首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >API安全w/o用户帐户

API安全w/o用户帐户
EN

Stack Overflow用户
提问于 2017-02-07 06:03:37
回答 1查看 58关注 0票数 1

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

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

-一个简单的公开api示例将是-发送应用程序链接到一个移动电话。通过短信。

EN

回答 1

Stack Overflow用户

发布于 2017-02-07 15:55:00

所以我的日常工作就是在移动空间里做一个产品来处理这类事情。如果我在回答你的问题时添加一个链接(帕罗夫),它完全算作工作,对吗?

我有几个建议/意见。

如果可能的话,首先要做的是避免必须信任客户端上运行的代码的情况。总有一个机会,有人将能够妥协,并获得访问您的API。

您的系统没有用户身份验证,因此尝试使用该方法保护API的选项已经过时。

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

您可以使用HTTPS保护到服务器的连接,但如果有人拥有客户端,则MITM连接仍然相对容易。钉扎连接在这方面有帮助,但是如果某个人足够确定,他们就可以破解执行固定的二进制文件或javascript。

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

您可以尝试通过在代码中混淆它来隐藏这个秘密,但取决于您的客户端是用哪种语言编写的,这可能或多或少是有效的。

此时,您可能不得不停下来,考虑访问API的重要性/价值,以及您在保护API方面需要花费多少工程精力。您还必须考虑到,某人可能需要投入多少工作才能侵入您的系统。

如果你是超级热衷,也有商业解决方案,涵盖这个空间的一部分,但这些确实花费现金。我的同事写了一个api关键项目,它也从移动的角度更详细地介绍了其中的一些东西,这是我们的小利基。

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

https://stackoverflow.com/questions/42082814

复制
相关文章

相似问题

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