【发布时间】:2011-03-03 15:33:08
【问题描述】:
我有一个仅适用于我构建的应用的迷你 API。 API 服务与我的应用程序位于单独的域中。我对其进行 jsonp 调用并接收 json 作为回报。
因此,我只希望我的应用能够访问它。我可以为我的应用列出一系列 IP 地址并允许它们吗?有没有更好的方法来阻止其他人对我的 API 的请求?
【问题讨论】:
-
解决方案不止一种,完全取决于您的基础架构设置方式。
我有一个仅适用于我构建的应用的迷你 API。 API 服务与我的应用程序位于单独的域中。我对其进行 jsonp 调用并接收 json 作为回报。
因此,我只希望我的应用能够访问它。我可以为我的应用列出一系列 IP 地址并允许它们吗?有没有更好的方法来阻止其他人对我的 API 的请求?
【问题讨论】:
如果 IP 始终保持不变,是的,这是一个有效的想法。如果您希望其他(动态)IP 地址进一步使用,另一种方法是使用 id 和密钥。
【讨论】:
实施基于 IP 的过滤的最佳方式是在网络服务器级别。这里简单介绍一下access control with Apache。如果那恰好是您的网络服务器。
【讨论】:
API 服务在什么操作系统上运行?如果是 Linux,请查看 iptables 以仅允许特定 IP 访问特定端口。
【讨论】:
老实说,我不会采用基于 IP 的解决方案。虽然它可能在短期内起作用,但它会使未来的事情变得困难。例如,如果您的 IP 提供商决定进行重置怎么办?最有可能(除非您已与您的提供商明确确定需要静态 ip)您的 ip 会改变。然后你的程序会出错,你不会知道为什么(或者更糟糕的是,你不会知道计算机现在已断开连接)。此外,如果您想添加机器,请考虑管理 1000 ips....哎呀!这样做的“正确”方法是使用其他方案(用户/密码、pki 等)对机器进行身份验证
【讨论】: