如何仅允许列入白名单的网站嵌入iframe?
我有一个表单,我想嵌入到一个网站中,它在我的白名单上。
尝试嵌入它的其他网站应该只得到一个错误页面。
<iframe src="https://domain.tld/getForm.php?embed=1&formId=123456"></iframe>
我希望我可以使用in来检查嵌入网站,但它不起作用。$_SERVER['HTTP_REFERER']
getForm.php
有谁知道最佳实践或任何解决方法吗?
提前致谢!
我有一个表单,我想嵌入到一个网站中,它在我的白名单上。
尝试嵌入它的其他网站应该只得到一个错误页面。
<iframe src="https://domain.tld/getForm.php?embed=1&formId=123456"></iframe>
我希望我可以使用in来检查嵌入网站,但它不起作用。$_SERVER['HTTP_REFERER']
getForm.php
有谁知道最佳实践或任何解决方法吗?
提前致谢!
内容安全策略标头现在是推荐的方法。
来自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;
有关更多详细信息,请参阅: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors
大多数浏览器将支持 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'); ?>
您可以在此处进一步阅读:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
希望它能有所帮助!