如何仅允许白名单网站嵌入 iframe?
How to allow iframe embedding only for whitelisted websites?
我有一个要嵌入网站的表单,它在我的白名单中。
尝试嵌入它的其他网站应该只会出现一个错误页面。
<iframe src="https://domain.tld/getForm.php?embed=1&formId=123456"></iframe>
我希望我可以在 getForm.php
中使用 $_SERVER['HTTP_REFERER']
来检查嵌入网站,但它不起作用。
有没有人知道最佳实践或解决方法?
提前致谢!
大多数浏览器将支持 X-Frame-Options header。
这 header 将阻止访问:
X-Frame-Options: SAMEORIGIN
而这个 header 允许访问:
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
希望对您有所帮助!
内容安全策略 headers 现在是推荐的方法。
来自 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
我有一个要嵌入网站的表单,它在我的白名单中。
尝试嵌入它的其他网站应该只会出现一个错误页面。
<iframe src="https://domain.tld/getForm.php?embed=1&formId=123456"></iframe>
我希望我可以在 getForm.php
中使用 $_SERVER['HTTP_REFERER']
来检查嵌入网站,但它不起作用。
有没有人知道最佳实践或解决方法?
提前致谢!
大多数浏览器将支持 X-Frame-Options header。
这 header 将阻止访问:
X-Frame-Options: SAMEORIGIN
而这个 header 允许访问:
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
希望对您有所帮助!
内容安全策略 headers 现在是推荐的方法。
来自 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