web-dev-qa-db-ja.com

ブラウザの「ソースの表示」モードはスクリプト攻撃を回避しますか?

URLがあるとしましょうwww.badjs.comこれは信頼されておらず、不正なスクリプトが含まれている可能性があります。

直感的に、そのURLへの view-source ナビゲーションはスクリプトを実行しないため、安全である必要があります。少なくともソースを安全に検査することができます。

しかし、直感はセキュリティの問題について結論を出すためのひどい方法なので、私の質問は次のとおりです。

ビューソースは、jsスクリプトインジェクションの観点からWebサイトを見る安全な方法ですか?

29
tohster

はい、(Google Chromeでは)信頼できないWebサイトをview-sourceモードで開くことは絶対に安全です。ここで注意すべき重要な点は、ページをview-sourceモードで「開く」必要があるということです。つまり、通常は最初にWebページを最初にロードしてからソースを表示することにより、レンダリングを行わないでくださいです。 。

Googleの例Chromeはview-source:http://www.badjs.com/になります

設計上、Google Chromeは、サーバーへの新しいGETリクエストを開始し、view-sourceモードのときにクライアントブラウザにレンダリングされていないバージョンのWebページを提供します。

また、特定のブラウザーにNo-Script拡張またはアドオンを使用して、スクリプト攻撃を防止することもできます。

34
Joseph

それは現在安全Chromeに基づいていますが、将来のチェックに基づいてはいけません。物事はいつでも変更される可能性があり、レンダリングの欠如は特に文書化された機能。

コードを確認したい場合は、コマンドラインツール( curl など)を使用してページをダウンロードし、何が読み込まれてファイルに保存されたかを分析することをお勧めします。これには、さまざまなユーザーエージェントに応じて提供される可能性のあるさまざまなページを簡単にテストできるという付加価値もあります。

22
WoJ

現在のところ安全であるという他の回答に問題はありませんが、誤解が生じる可能性があります。サイトが安全かどうかを確認するためにそれを使用したいと言ったので、おそらくソースを表示したときに悪意のあるコンテンツが見つからなかった後、通常はページをロードします。これに該当する場合は、view-source:を使用していることをWebサイトが検出(または少なくとも推測)できることに注意する必要があります。少なくともFirefoxでは、キャッシュを使用しないだけでなく、ページを2回目にロードするだけでなく、他のリソースもロードしません。通常のブラウザユーザーエージェントが接続しているのに他のリソースがロードされていないことがサイトで確認された場合、ユーザーがソースをチェックしていると推測できます。この検出を自動化するのは簡単で、ページの残りすべてと一緒に読み込まれた場合にのみ、リソースから悪意のあるJavaScriptを提供します。これにより、Webサイトが引き続き悪意のあるJavaScriptを提供しているにもかかわらず、ソースの検査からその存在を隠すことができます。

潜在的な解決策は、現在開いているページを見てソースを読み取ることができるInspect Elementを使用することです。これは検出がはるかに困難です(CSSがブラウザーウィンドウのサイズを決定できるため、検査要素が開いているときに特定の量だけ縮小されるため、不可能ではありません)。要素の検査isより複雑であり、view-source:よりも悪用される可能性があるため、この状況では脅威モデリングを適用する必要があります。

0
forest