Php 如何仅允许白名单网站嵌入iframe?

Php 如何仅允许白名单网站嵌入iframe?,php,html,forms,iframe,referer,Php,Html,Forms,Iframe,Referer,我有一个表单,我想嵌入到一个网站中,它在我的白名单上 其他试图嵌入它的网站应该只会得到一个错误页面 <iframe src="https://domain.tld/getForm.php?embed=1&formId=123456"></iframe> 我希望我可以在getForm.php中使用$\u服务器['HTTP\u REFERER']]来检查嵌入网站,但它不起作用 有人知道最佳实践或解决方法吗 提前谢谢 大多数浏览器都支持X-Frame-Option

我有一个表单,我想嵌入到一个网站中,它在我的白名单上

其他试图嵌入它的网站应该只会得到一个错误页面

<iframe src="https://domain.tld/getForm.php?embed=1&formId=123456"></iframe>

我希望我可以在
getForm.php
中使用
$\u服务器['HTTP\u REFERER']]
来检查嵌入网站,但它不起作用

有人知道最佳实践或解决方法吗


提前谢谢

大多数浏览器都支持X-Frame-Options标题

此标头将阻止访问:

X-Frame-Options: SAMEORIGIN
和此标头以允许访问:

X-Frame-Options: ALLOW-FROM [uri]
选项示例:

X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
X-Frame-Options: ALLOW-FROM https://example.com/
PHP中的一个示例:

<?php header('X-Frame-Options: SAMEORIGIN'); ?>

您可以在此处进一步阅读:


希望对你有所帮助

现在推荐使用内容安全策略头

来自MDN的示例:

// iframe can be embedded in pages on the origin and also on https://www.example.org
Content-Security-Policy: frame-ancestors 'self' https://www.example.org;

有关更多详细信息,请参见:

您必须检查向
getForm.php发出请求的远程地址的IP,但是,IP可能被欺骗。查看
$\u服务器
superglobal。我认为远程地址是拨打电话的站点的IP,但我不是100%确定,那可能只是客户端IP。你能找到解决方案吗?我尝试了$\u服务器['HTTP\u REFERER'],它工作正常,但我在某个地方读到它可能会被欺骗,所以有更好的解决方案吗?
allow from
is obselete now是否有另一种方法允许从特定域作为allow from is obselete。