web-dev-qa-db-ja.com

ホワイトリストに登録されたWebサイトに対してのみiframeの埋め込みを許可するにはどうすればよいですか?

ホワイトリストにあるウェブサイトに埋め込みたいフォームがあります。

それを埋め込もうとする他のウェブサイトは、エラーページだけを受け取るはずです。

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

$_SERVER['HTTP_REFERER']getForm.phpを使用して、埋め込みWebサイトを確認できることを期待していましたが、機能していません。

誰かがベストプラクティスや回避策を知っていますか?

前もって感謝します!

6
Mr. B.

ほとんどのブラウザは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

それが少し役立つことを願っています!

12
codelock

現在、コンテンツセキュリティポリシーヘッダーが推奨されるアプローチです。

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

4
Josh Mc