【问题标题】:Restrict API access to my Frontend app using daily random API key使用每日随机 API 密钥限制对我的前端应用程序的 API 访问
【发布时间】:2020-08-06 05:11:59
【问题描述】:

我正在创建一个 API,仅由我的 Vue.js 应用程序访问,用于显示电影时间、视频点播链接等数据。没有私人敏感信息,但我想避免其他人和机器人使用我的资源来获取免费数据。我知道将 API 限制为我自己的一页前端应用程序几乎是不可能的,因为有人总是可以:

  • 从页面源获取 API 密钥
  • 将引荐来源标头欺骗到我的 API 限制使用的标头

所以我想通过让后端服务器每天中午生成一个 API 密钥来“减轻损害”,即使用我的 API 的机器人数量。然后,当 PHP 加载 Vue.js 应用程序时,它会将该 API 密钥插入 Vue.js 代码中,这将使用它来查询我的 Python API。如果 Vue 收到“不正确的 API 密钥”错误(页面在 11:59 加载并在 12:01 发送请求的情况),Vue.js 将刷新页面以获取新密钥。

这样,如果有人从源获取 API 密钥,无论如何它都会在不到 24 小时内过期。当然,有人可以每天抓取页面获取 API 密钥并仍然使用 API,但我觉得这会阻止很多机器人和垃圾邮件发送者。

有没有人尝试过这样的事情?这听起来像是一个可行的解决方案,还是有一些我在 StackOverflow 上找不到的更好的事情要做?

【问题讨论】:

  • 与其询问您的具体解决方案,为什么不发布您尝试解决的原始问题?您想阻止机器人和垃圾邮件发送者,但您需要向谁开放您的应用程序?这些人需要如何访问?
  • 前端应该调用你的 backed,然后调用你的 api 并使用安全的身份/密钥密码或 pref 某种类型的令牌。 API 应限制为仅允许来自指定主机域的流量。你的提议相当于锁上一扇门,但把钥匙留在锁里。如果您想要简单的安全性而不会感到头疼,auth0 提供了一个免费的开发者帐户来让您的小型项目顺利进行。
  • 感谢@TravisActon,但是任何人都可以向后端发出请求,就像前端页面将向后端发送请求一样

标签: api vue.js jwt api-key


【解决方案1】:

从与 API 服务器相同的位置(服务器、私有 DNS)进行服务器端渲染怎么样?

您可以在服务器函数本身中写入fetch(api)

【讨论】:

    猜你喜欢
    • 2019-07-15
    • 2019-01-31
    • 1970-01-01
    • 2020-12-29
    • 2018-05-22
    • 2018-09-02
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多