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。