ASP.NET Web Forms の概要
Web Forms モデルと、ページを作成してコントロールを使用する方法。
Web Live Preview でページ内の外部リソースがブロックされているのはなぜですか?
サード パーティ ドメインの外部リソースがページ内にある場合は、Web Live Preview のデザイナーにより読み込みが妨げられ、次のトーストが表示される場合があります。
デザイナーでリソースの読み込みがブロックされている理由と、トーストが表示されている理由が疑問に思われる場合があります。 この記事では、リソースがブロックされている理由について説明します。
Web Live Preview と BrowserLink の概要
Web Live Preview (WLP) は、BrowserLink 上に構築された Visual Studio 拡張機能です。 WLP は BrowserLink を使用して、Visual Studio とデザイナー間の双方向通信のためのチャネルを提供します。 この双方向通信により、WLP は次のような多くの機能を提供できます。
- デザイナーのコンテンツおよび現在選択されているノードをエディターのそれと同期させる。
- デザイナーから作成された新しいコンテンツをエディターにプッシュする。
- アクション パネル コマンドの実行。
Web Live Preview と BrowserLink を使用した潜在的なセキュリティの脆弱性
サード パーティのスクリプトまたはリソースを Web ページに挿入すると、WLP と BrowserLink を使用してクロスサイト スクリプティング (XSS) 攻撃が行われ、潜在的なセキュリティの脆弱性にさらされるおそれがあります。
サード パーティのリソースが悪意のあるコードをサイトに挿入する可能性がある場合、コードはデザイナーに挿入された ブラウザー リンク スクリプトを使用して、Visual Studio にコールバックすることができます。 挿入されたスクリプトを使用すると、Visual Studio で開いているファイルに任意のコンテンツを書き込んだり、他の攻撃ベクトルを開いたりするおそれがあります。
現在、攻撃者が BrowserLink スクリプトを経由して Visual Studio に戻る通信を防ぐ良い方法はありません。
セキュリティ脆弱性の軽減策
可能な限り、BrowserLink スクリプトを介して Visual Studio に戻る通信のセキュリティの脆弱性を制限し、軽減しました。 ただし、一部の XSS 攻撃を通じた攻撃は引き続き可能です。
このような XSS 攻撃の可能性を減らすために、既定では、WLP によりすべての外部リソースの読み込みがブロックされます。 外部リソースがブロックされている場合、WLP ではデザイナーの右上隅に次のトーストが表示されます。
(この例では、サンプル Web アプリで使用される外部リソースである次の SVG を使用します:https://visualstudio.microsoft.com/wp-content/uploads/2021/10/Product-Icon.svg)
Microsoft Edge DevTools ウィンドウが開いている場合は、外部リソースの読み込みに失敗した理由を説明する次のメッセージが表示される場合もあります。
デザイナーのトーストで、[こちらをクリックしてください] リンクを選択すると、次のダイアログが表示され、ブロックされたリソースのドメインがダイアログの一覧に自動的に追加されます。
ダイアログの一覧に保存されている外部ドメインからのリソースは、WLP では既定でブロックされず、通常どおりに読み込まれます。 [OK] を選択するとデザイナーによってページが再読み込みされ、ドメインがダイアログに追加された、以前はブロックされていたリソースが読み込まれます。 信頼でき、安全であることを確認した外部ドメインのみを許可するようにしてください。
トーストで [Web Live Preview - 外部ドメイン] リンクを選択すると、同じダイアログが表示されますが、ブロックされたリソースのドメインはダイアログに追加されません。
Tools -> Options -> Web Live Preview -> Allowed external domains during design
設定を使用してダイアログにアクセスすることもできます。 ダイアログ設定は、インストールされている Visual Studio インスタンスごとに行われます。
警告
ドメインを既定でブロックしないようにすると、上記で説明した XSS 攻撃にさらされるおそれがあります。 繰り返しになりますが、信頼できる安全なドメインとして検証できる外部ドメインのみを許可することを強くお勧めします。