Nginx - 防止 .php 文件在您自己的服务器/域之外的任何服务器上运行?

Nginx - 防止 .php 文件在您自己的服务器/域之外的任何服务器上运行?

我们有一个通过 iFrame 运行的 mp3 播放器,这不是我们的选择,但我们不得不这样做。我们希望防止其他人简单地将 iframe 嵌入到他们的网站上。

最好的方法是什么?我们正在运行 nginx,因此没有 .htaccess。mp3 播放器由 php 文件组成,我们需要在 iframe 中继续运行它。

有没有办法锁定特定的 mp3 播放器 php 文件(在本例中为 html5player.php),使其只能在我们的服务器或域名上执行?在 nginx 中肯定有办法做到这一点?但是,当然,如果他们嵌入 iFrame,它会认为它确实在我们的服务器上运行,不是吗?

我想到过的所有解决方案都在某个地方失败了,因此非常感谢您的意见。

答案1

听起来像是X-Frame 选项标头:

add_header X-Frame-Options SAMEORIGIN;

(显然,应用于与相关文件匹配的位置)

您也可以在 PHP 中添加标题,这可能更容易。

确保添加标题确切地一次,否则将被忽略一些浏览器,在调试时引起很多“乐趣”。参见错误报告对于 Chrome,错误报告适用于 Firefox。

答案2

我不是 NGINX 专家,但从理论上讲这是可行的:

位置 ~* \urltoyourplayer?$ {
  valid_referers 没有阻止yourdomain.fqdn;
    如果 ($invalid_referer) {
      返回 403;
    }
}

这应该可以防止通过读取引荐来源 URL 将您的播放器嵌入到其他网站,如果它与您的域名匹配则 OK,否则返回错误 403。

相关内容