web-dev-qa-db-ja.com

X-Frame-Options:SAMEORIGIN HTTPヘッダーをバイパスする方法はありますか

別の会社のSharePointサーバーが提供するレポートをiframeで表示する必要があるWebページを開発しています。彼らはこれで大丈夫です。

Iframeでレンダリングしようとしているページは、X-Frame-Options:SAMEORIGINを提供しています。これにより、ブラウザ(少なくともIE8)はフレーム内のコンテンツのレンダリングを拒否します。

まず、これは彼らが制御できるものですか、それともSharePointがデフォルトで行うものですか?私は彼らにこれをオフにするように頼むならば、彼らはそれをすることさえできますか?

第二に、このhttpヘッダーを無視してフレームをレンダリングするようにブラウザーに指示することができますか?

41
Daniel Coffman

2番目の会社がIFrameでコンテンツにアクセスすることに満足している場合、制限を解除する必要があります-IIS config。

それを回避するためにできることは何もありません。また、機能するものはすべてセキュリティ修正プログラムですぐに修正されるはずです。ソースコンテンツヘッダーがフレームで許可されていない場合、ブラウザにフレームをレンダリングするように指示することはできません。これにより、セッションハイジャックが容易になります。

コンテンツがGETのみの場合、データをポストバックしないので、ページサーバー側にアクセスしてヘッダーなしでコンテンツをプロキシできますが、ポストバックは無効になります。

28
Keith

2019年更新:あなたcanバイパスX-Frame-Options<iframe> using X-Frame-Bypass Webコンポーネント。複数のCORSプロキシを使用してIFrame要素を拡張し、最新のFirefoxおよびChromeでテストされました。

次のように使用できます。

  1. (オプション)Safariの場合、 組み込み拡張ポリフィルを使用したカスタム要素 を含めます。

    <script src="https://unpkg.com/@ungap/custom-elements-builtin"></script>
    
  2. X-Frame-Bypass JSモジュールを含めます。

    <script type="module" src="x-frame-bypass.js"></script>
    
  3. X-Frame-Bypassカスタム要素を挿入します。

    <iframe is="x-frame-bypass" src="https://example.org/"></iframe>
    
25
niutech

X-Frame-Optionsヘッダーは、ブラウザーレベルで適用されるセキュリティ機能です。

ユーザーベース(企業アプリのIT部門)を制御できる場合は、greasemonkeyスクリプト(可能な場合)全員にグリースモンキーを展開し、b)共有方法でスクリプトを展開します)...

または、結果をプロキシできます。サーバー上にエンドポイントを作成し、そのエンドポイントにターゲットエンドポイントへの接続を開かせ、トラフィックを逆方向に集中させます。

8
Rob

はい、フィドラーは私にとってオプションです:

  1. 開くフィドラーメニュー>ルール>ルールのカスタマイズ(これによりCustomRules.js)。
  2. 関数OnBeforeResponseを見つけます
  3. 次の行を追加します。

    oSession.oResponse.headers.Remove("X-Frame-Options");
    oSession.oResponse.headers.Add("Access-Control-Allow-Origin", "*");
    
  4. スクリプトを保存することを忘れないでください!
4
kernowcode

2番目の質問については、 Fiddler フィルターを使用して応答を設定できますX-Frame-Optionsヘッダーを手動でALLOW-FROM *。ただし、もちろん、このトリックはあなただけに有効です-他のユーザーはiframeコンテンツを見ることができません(同じことをしないと)。

4
Pj_pavel