ASP.NET Web Formsを使用したはじめに

Web Forms モデルと、ページを作成してコントロールを使用する方法。

Web Live Preview でページ内の外部リソースがブロックされるのはなぜですか?

ページにサード パーティ製ドメインの外部リソースがある場合は、Web Live Preview のデザイナーによって読み込みが妨がっていることに気付き、このトーストを表示できます。

ブロックされたリソーストースト

リソースがデザイナーでの読み込みをブロックされている理由と、トーストが表示されている理由が疑問に思われる場合があります。 この記事では、リソースがブロックされた理由について説明します。

Web Live Preview (WLP) は、 BrowserLink の上に構築された Visual Studio 拡張機能です。 WLP では BrowserLink を使用して、Visual Studio とデザイナー間の双方向通信のチャネルを提供します。 この双方向通信により、WLP は多くの機能を提供できます。

  • デザイナー内のコンテンツと現在選択されているノードをエディターの内容と同期する。
  • デザイナーから作成された新しいコンテンツをエディターにプッシュする。
  • アクション パネル コマンドの実行。

サード パーティのスクリプトまたはリソースを Web ページに挿入すると、WLP と BrowserLink を使用してクロスサイト スクリプティング (XSS) 攻撃を行うことで、潜在的なセキュリティ脆弱性が発生する可能性があります。

サード パーティのリソースが悪意のあるコードをサイトに挿入する可能性がある場合、コードはデザイナーに挿入された Browser Link スクリプトを使用して 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 ウィンドウが開いている場合は、外部リソースの読み込みに失敗した理由を説明する次のメッセージが表示される場合もあります。

ブロックされたリソース メッセージ DevTools

デザイナーのトーストで 、[ここをクリック] リンクを選択すると、次のダイアログが表示され、ブロックされたリソースのドメインがダイアログの一覧に自動的に追加されます。

ドメインを許可する

ダイアログの一覧に格納されている外部ドメインからのリソースは、WLP では既定ではブロックされないため、通常どおりに読み込まれます。 [OK] をクリックすると、デザイナーによってページが再読み込みされ、ドメインがダイアログに追加された以前にブロックされていたリソースが読み込まれます。 信頼できる安全であることを確認した外部ドメインのみを許可してください。

トーストで [Web Live プレビュー - 外部ドメイン ] リンクをクリックすると、同じダイアログが表示されますが、ブロックされたリソースのドメインはダイアログに追加されません。

[追加なしでドメインを許可する]

設定を使用してダイアログに Tools -> Options -> Web Live Preview -> Allowed external domains during design アクセスすることもできます。 ダイアログ設定は、インストールされている Visual Studio インスタンスごとに行われます。

[ツール] [オプション] [ブロックされたリソース]

警告

ドメインを既定でブロックしないようにすると、上記の XSS 攻撃が発生する可能性があります。 ここでも、信頼できる安全なドメインとして検証できる外部ドメインのみを許可することを強くお勧めします。