【问题标题】:Secure an API if needed如果需要,保护 API
【发布时间】:2017-03-02 14:24:55
【问题描述】:

所以我构建了一个列出一组书籍的 ios&android 应用程序。 当您在列表中打开应用程序时,无需帐户。

现在 API 位于 example.com/api/list_books?page=1&per_page=10,此 API 列出书籍返回 JSON 数组。

现在任何人都可以访问此 URL 并获取数据,我认为这很好,因为数据无论如何都会作为帖子列在博客上。

我的问题是是否值得保护 API 以及如何保护?

如果我使用 JWT 之类的东西,我认为这有点毫无意义,因为如果我向 api/auth 发出请求以获取令牌,我认为家里的任何人都可以通过他们的路由器看到哪些数据正在发送到 API,用户和密码,因为它对每个人都是一样的,因为您只需打开应用程序并列出书籍。

由于这不是私人用户数据,是否值得在这里做任何事情?如果是,您提出什么解决方案?

感谢您的宝贵时间。

【问题讨论】:

  • 如果它是公开的,我真的看不到任何真正保护它的选项。如果您担心滥用,您可以随时通过 IP 地址限制您的 api。

标签: android ios api security mobile


【解决方案1】:

我认为您必须回答您是否认为 API 中的数据有价值或可能有价值的问题。

如果有并且您不希望有人窃取数据,您可以做很多事情来保护它。没有什么是完美的,您希望数据越安全,您需要投入的精力就越多。

如果您还没有使用 HTTPS,第一步是使用 HTTPS。这有助于防止人们在途中拦截交通。

之后,您的主要问题是您不知道使用什么来访问您的 API。它可能不是您的软件,也可能是脚本或其他人的应用程序。你可以做很多不同的事情来增加你对只有授权的东西才能访问你的 API 的信心。最常见的方法可能是在您的应用程序中嵌入 API 密钥。您可以使用此密钥将您的应用识别为授权应用。

仅允许包含由密钥签名的某些数据的请求从 API 检索数据。您不能只发送密钥,因为有人可以 MITM 流量(即使使用 https)并非常容易地窃取它。

下一个问题是有人可以获取您的应用并对其进行逆向工程以提取秘密。为了使这更困难,你可以混淆你的代码,但你仍然在应用程序中泄露密钥,如果有人非常确定,他们可能仍然可以得到它。

您可以做的还有很多,我为一家拥有商业解决方案的公司工作,该解决方案试图解决这个用例,但这实际上是一个问题,即数据的价值以及您认为多少努力是合理的尝试和保护它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2017-01-28
    • 2018-01-05
    相关资源
    最近更新 更多