【问题标题】:Reliably detect caller domain over cURL request?通过 cURL 请求可靠地检测调用者域?
【发布时间】:2012-10-20 10:48:46
【问题描述】:

好的,所以服务器端的安全性不是我的强项。基本上,我正在构建一个服务,用户只能在他们注册时规定的域上使用(通过 SDK)。

SDK 通过 PHP 中的 cURL 调用我的 Web 服务。

我是否认为我无法可靠地检测到调用者域,即强制它与他们在注册时规定的域相同?

cURL 当然会通过标头发送此信息,但标头总是可以(?)被伪造。

有没有更好的行动方案来为这类事情强制执行域?

(注意,我也已经在使用 API 密钥了 - 只是我也想限制域)

提前致谢

【问题讨论】:

  • 社论:如果你问我,我不会这样做。在某些情况下,域和 IP 可以更改(基于云的服务、负载平衡器、代理、紧急服务器移动、紧急 IP 地址更改......)。有了这样的东西,你会让客户面临很多麻烦。我个人会避免购买您的产品,如果它附带一张支票,如果我的情况发生变化,可以冻结我的网站的运营。如果因为是周末或您所在时区的晚上而无法联系到您怎么办?
  • 这是一个公平的观点 - 谢谢。不过,同样地,我有兴趣防止我的服务被跨多个域共享而被滥用。这只是我应该和别人一起生活和信任的东西吗?毕竟,仔细想想,这不像是我将我的 API 密钥分发给我使用的服务,让其他人自费使用......
  • 我想这取决于您的业务范围和客户群。在涉及规模合理的组织时,我往往会更加信任。作弊对他们来说是有风险的:一个心怀不满的实习生可能会把一切都搞砸。不过,较小的客户,我不知道。这真的取决于你的情况。
  • 我认为您可以做的是每天使用脚本分析数据以检查 ips 到 api 的映射,看看它是否与初始设置不匹配。我认为它会在大多数情况下匹配案例..
  • 因为 IP 域映射不经常改变

标签: php web-services security curl dns


【解决方案1】:

您从 cURL 调用中获得的唯一信息是 REMOTE_ADDR 环境变量中的远程 IP。

AFAIK,非常很难有意义地伪造(即,当调用者想要实际接收数据时。)

因此,如果您可以忍受将客户限制为 IP,那么通过检查该变量应该是相当安全的。

但是,当然,这使您无法控制他们将数据用于哪个域。这是不可能的 - 一个 IP 可用于多个域。

但是,您可以尝试将域名解析为其 IP,并将其与您获得的 REMOTE_ADDR 进行比较。

我认为这不是一个好主意。见我上面的评论。

【讨论】:

  • 感谢您的帮助。所以这听起来像是将某人限制在一个特定的域,即阻止他们在另一个域上使用相同的帐户,实际上并不可行......
猜你喜欢
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
相关资源
最近更新 更多