【问题标题】:Protecting API - JS Frontend and PHP Backend保护 API - JS 前端和 PHP 后端
【发布时间】:2013-06-18 00:38:14
【问题描述】:

我正在寻找一个好的实现来保护我用 PHP 编写的后端。

场景:

服务器 1 (www.domain.com) 服务器只向客户端发送 JS/HTML

服务器 2 (www.domain2.com) 正在运行一个 PHP 服务器,它使用 JSON 数据响应服务器 1(由 Sevrer1 上的 Javascript 模板引擎呈现)。

如何阻止其他人从 Server1 获取 JSON 响应? 我知道我可以添加某种 API 密钥,但它存储在 JS 中(每个人都可以阅读),我知道我可以检查请求是否来自服务器 1 IP,但伪造这样的请求并不是什么大问题。

【问题讨论】:

  • 与合作者交谈,看起来除了在服务器 1 上使用某种服务器端语言之外别无他法(;

标签: php javascript security


【解决方案1】:

从 Server1 到 Server2 进行内部调用是一种解决方案,不将 Server1 暴露在互联网上,将其添加到专用网络可能会有所帮助。

即使有人解决了问题,您也可以添加验证,例如确保请求来源来自授权来源(在您的情况下为 Server2)。 如果请求来源来自其他来源,则直接返回而不进行处理。

如果您仍然对此感到偏执,您可以随时添加更多机制,例如hash-based message authentication code

【讨论】:

    【解决方案2】:

    您可以做的一件事是在服务器 1 上创建一个会话 cookie,并同时将该会话值存储在服务器 2 上的数据库中。每当有人从服务器 1 发出请求时,您都会在请求中附加 cookie 值并发送它在进行 API 调用时到服务器 2。仅当传入的会话 ID 与存储在数据库中的 ID 匹配时,服务器 2 才会返回 JSON。

    这不是万无一失的。有人可以破解 cookie,一旦用户注销,您需要清除会话。

    正如您提到的,另一种方法是在服务器 1 上使用服务器端脚本语言。

    【讨论】:

      【解决方案3】:

      为什么不创建一些短期令牌并仅在服务器端共享它们,然后嵌入到 JS 代码中?

      Source

      【讨论】:

        猜你喜欢
        • 2019-12-25
        • 2022-01-01
        • 2018-09-21
        • 1970-01-01
        • 1970-01-01
        • 2017-07-06
        • 1970-01-01
        • 2019-09-17
        • 1970-01-01
        相关资源
        最近更新 更多