我们有一个通过 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。