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

2022-08-30 21:46:35

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

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

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

我希望我可以使用in来检查嵌入网站,但它不起作用。$_SERVER['HTTP_REFERER']getForm.php

有谁知道最佳实践或任何解决方法吗?

提前致谢!


答案 1

内容安全策略标头现在是推荐的方法。

来自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


答案 2

大多数浏览器将支持 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

希望它能有所帮助!


推荐