仅从 chrome 分机安全访问 api
Secure access to api only from chrome extension
我正在努力允许 chrome 扩展到 post 通过 post 数据进入我的站点的新条目。
我希望能够将其锁定,因此只有 chrome 扩展可以 post。如果我从其他任何地方获得 post 数据,我想拒绝它。
有谁知道if/how这是可能的,或者你会怎么做?
不幸的是,验证客户端(无论是 Chrome 扩展、Android 应用程序、iOS 应用程序、客户端 JavaScript 还是其他客户端)来自Web 服务器是一个未解决的问题。
您可以采取一些措施来阻止滥用和缓解此问题,例如:
- 需要用户身份验证(以及每个用户的速率限制)
- 基于IP地址的限速访问
- 要求提供在先前请求中分发的令牌(这可用于确保以特定预期顺序/模式调用特定 API)。
- 针对异常或超限使用显示验证码或其他质询
虽然您还可以检查诸如用户代理、引荐来源 URL 或嵌入 Chrome 扩展中的令牌等内容,但对于任何分布式应用程序,逆向工程都很容易这些并在假冒应用程序中模仿它们,因此这些不是真正的解决方案。
您可以在代码中添加一个简单的检查。
以下代码会阻止任何试图在 chrome 扩展之外访问您的 api 的人。
if(substr($_SERVER['HTTP_ORIGIN'],0,19) !== "chrome-extension://") die("Not Allowed")
我正在努力允许 chrome 扩展到 post 通过 post 数据进入我的站点的新条目。
我希望能够将其锁定,因此只有 chrome 扩展可以 post。如果我从其他任何地方获得 post 数据,我想拒绝它。
有谁知道if/how这是可能的,或者你会怎么做?
不幸的是,验证客户端(无论是 Chrome 扩展、Android 应用程序、iOS 应用程序、客户端 JavaScript 还是其他客户端)来自Web 服务器是一个未解决的问题。
您可以采取一些措施来阻止滥用和缓解此问题,例如:
- 需要用户身份验证(以及每个用户的速率限制)
- 基于IP地址的限速访问
- 要求提供在先前请求中分发的令牌(这可用于确保以特定预期顺序/模式调用特定 API)。
- 针对异常或超限使用显示验证码或其他质询
虽然您还可以检查诸如用户代理、引荐来源 URL 或嵌入 Chrome 扩展中的令牌等内容,但对于任何分布式应用程序,逆向工程都很容易这些并在假冒应用程序中模仿它们,因此这些不是真正的解决方案。
您可以在代码中添加一个简单的检查。
以下代码会阻止任何试图在 chrome 扩展之外访问您的 api 的人。
if(substr($_SERVER['HTTP_ORIGIN'],0,19) !== "chrome-extension://") die("Not Allowed")