【问题标题】:Protect php script - allow embedding only from listed pages保护 php 脚本 - 只允许从列出的页面嵌入
【发布时间】:2014-10-14 18:48:19
【问题描述】:

我想提供一个可嵌入其他网站的网络服务 - 现在我需要一个保护嵌入的解决方案 - 以便只有允许的服务器才能嵌入页面...

您认为嵌入页面的最佳方式是什么(它是一个 php 脚本)?

保护它的最佳方法是什么?

我尝试了一些方法,例如 iframe 嵌入和 php $_SERVER['HTTP_REFERER'] 保护(这并不是真正的保存;)

那么有人有更好的主意吗? Javascript,htaccess,...?

【问题讨论】:

  • @Mike 我已经考虑过了 - 你有任何链接或提示可以为我的目的构建 api 吗?
  • 你可以试试:restapitutorial.com。我刚刚在 Google 上快速搜索了“creating rest api”。
  • @Mike 好的,谢谢! :)

标签: php embed protection


【解决方案1】:

你可以让$_SERVER["REMOTE_ADDR"]检查,哪个服务器是调用者,你可以过滤不需要的。

另一种方式是@Mike 可悲的是,要创建 API,需要安全令牌。

如果要检查调用者的 IP,请执行以下操作:

$allowedHosts = array('192.168.1.1', '192.168.1.2');
if (in_array($_SERVER["REMOTE_ADDR"], $allowedHosts)) {
    //Do what you want
} else {
    die('Your host is not allowed');
}

编辑

OP 询问:

与伪造 $_SERVER["REMOTE_ADDR"] 信息的难易程度有关吗?

不知道,据我所知,这并不容易。也许有一些方法可以让 IP 成为问题。

如果您正在处理非常敏感的数据,我的建议是使用 IP 验证AND安全令牌。

您需要创建一个接口,为传入的请求提供服务。如果我需要做类似你的工作,我会这样做:

  • 检查传入的 IP。 (我用代码写的)。让我们在请求中使用 API 密钥/安全密钥。检查这些参数是否正确。

  • 从客户端,首先获取一个安全令牌。如果 API 密钥和安全密钥正确,则为客户端提供安全令牌。令牌应在短时间内到期,例如。 5-15 分钟。

  • 仅使用 API 密钥、安全密钥、安全令牌提供下一个请求。

  • 全部使用 https 协议。

  • 如果有很多来自同一 IP 的失败请求,请禁止该 IP 或暂时阻止它。

【讨论】:

  • 你知道$_SERVER["REMOTE_ADDR"]是怎么保存的吗?
  • 保存在哪里?进入数据库,还是文本文件?不明白。查看我编辑的帖子。
  • 检查已编辑的帖子。修改数组,并将任何主机添加/编辑到该 $allowedHosts 数组中。
  • @lolka_bolka 与伪造$_SERVER["REMOTE_ADDR"] 信息有多容易有关?
  • @lolka_bolka 好吧,我玩弄了它,将$_SERVER["REMOTE_ADDR"] 与 iframe 嵌入结合使用的问题是我获得了用户的 IP 地址 - 对吗?但实际上我需要一台通过 iframe 嵌入我的网站的服务器。你知道我的意思吗?
猜你喜欢
  • 1970-01-01
  • 2013-07-19
  • 2010-11-12
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
相关资源
最近更新 更多