【问题标题】:rest API, IP origin control for preventing the bypassing of ApigeeREST API,IP源控制,防止绕过Apigee
【发布时间】:2016-01-22 17:08:32
【问题描述】:

我们使用 Spring 创建了一个 Rest API。 没有实施安全措施。

现在我们将使用 Apigee 进行 API 管理,它将提供各种服务,用于监控、安全等。 我们所有的客户现在都应该使用 Apigee 调用我们的 API,而不是直接在我们的服务器上调用我们的服务。

我们如何强制绕过 Apigee 是不可能的?

我想,在我们的代码中,我们可以有一个过滤器并使用“Access-Control-Allow-Origin”属性,例如:

public class OurFilter implements Filter
{
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException,
            ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE");
        chain.doFilter(req, res);
    }
}

“*”将替换为 Apigee Ip、域名或其他内容。

我的问题是这有多安全。人们可以在他们的 http 请求中添加一个 header 并直接成功地调用我们的服务器吗?或者它是否检查低级别单个“IP数据包”上的原始IP。

如果仅通过编辑 http 标头就可以进行欺骗,那么使绕过 Apigee 成为不可能的正确方法是什么?

非常感谢

【问题讨论】:

    标签: java api security ip apigee


    【解决方案1】:

    您考虑使用的标头用于启用CORS,这对浏览器(客户端)端很重要,但它不为服务器端提供任何安全性。

    如果您想保护后端 API 不被直接使用,则必须在 Apigee 和后端 API 之间建立某种身份验证,以便后端 API 拒绝来自其他客户端的任何请求。

    有不同的选择,如何做到这一点。这取决于所需的安全级别和后端 API 的功能。

    例如:

    • 按 IP 地址限制 - 仅允许来自 Apigee 的 IP 地址的请求
    • 使用共享密钥 - 与后端 API 通信时,Apigee 将添加一个包含密钥的标头,该密钥可被后端识别。这可能是最简单的解决方案,并提供了合理的安全级别。当然,假设通信仅通过 HTTPS :)。
    • 使用two-way SSL - 这样更安全,但也更复杂。 Apigee 端必须使用客户端证书对后端 API 进行身份验证。

    【讨论】:

      猜你喜欢
      • 2017-09-30
      • 2021-08-08
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多