ブラウザスニッフィング(ブラウザ検出とも呼ばれる)は、ウェブサイトやウェブアプリケーションで使用される一連の技術であり、訪問者が使用しているウェブブラウザを判別し、訪問者にブラウザに適したコンテンツを提供します。また、モバイルブラウザを検出し、モバイル向けに最適化されたウェブサイトを送信するためにも使用されます。この方法は、HTML、カスケーディングスタイルシート(CSS)、またはドキュメントオブジェクトモデル(DOM)の誤った解釈によるブラウザ間の非互換性を回避するために使用されることがあります。ワールドワイドウェブコンソーシアムは、推奨事項の形でいくつかの最も重要なウェブ標準の最新の中央バージョンを維持していますが、実際には、これらの標準に正確に準拠するブラウザを設計したソフトウェア開発者はいません。SVGやXMLHttpRequestなどの他の標準やプロトコルの実装も同様に異なります。その結果、異なるブラウザは同じページを異なる方法で表示するため、ブラウザスニッフィングはウェブブラウザを検出してコンテンツの一貫した表示を保証するために開発されました。[1]
スニファーメソッド
クライアント側スニッフィング
Web ページでは、ユーザー エージェントによって解釈され、結果がWeb サーバーに送信される JavaScript などのプログラミング言語を使用できます。例:
var isIEBrowser = false ; if ( window . ActiveXObject ) { isIEBrowser = true ; }
// または、短く:
var isIE = ( window . ActiveXObject !== undefined );
このコードはクライアントコンピューターによって実行され、その結果は他のコードによってクライアント側で必要な調整を行うために使用されます。この例では、クライアント コンピューターは、ブラウザーがActiveXと呼ばれる機能を使用できるかどうかを判断するように求められます。この機能は Microsoft 独自のものであったため、肯定的な結果は、クライアントが Microsoft のInternet Explorer を実行している可能性があることを示します。ただし、Microsoft が ActiveX コードをオープン ソースでリリースしたため、これは信頼できる指標ではなくなりました。つまり、どのブラウザーでも使用できるということです。
標準ブラウザ検出方法
Web サーバーは、 HTTP (Hypertext Transfer Protocol)と呼ばれる通信プロトコルを使用してクライアントと通信します。このプロトコルでは、クライアントが Web サイトの表示に使用されているブラウザーに関する情報をUser-Agent ヘッダーで サーバーに送信することを指定します。
サーバーサイドスニッフィング
広範なブラウザ技術により、ユーザーが匿名を保とうとしても永続的なユーザー追跡が可能になります。ブラウザ フィンガープリントの詳細については、 デバイス フィンガープリントを参照してください。
問題と基準
多くのウェブサイトは、ブラウザスニッフィングを使用して、訪問者のブラウザが特定の機能(JavaScript、DHTML、ActiveX、またはカスケーディングスタイルシートなど)を使用できないかどうかを判断し、特定のブラウザが使用されていない場合はエラーページを表示します。 しかし、ユーザーが使用できるブラウザの膨大な種類を考慮することは事実上不可能です。 一般的に、ブラウザスニッフィングを使用してどのようなページを表示するかを決定するウェブデザイナーは、最も人気のある3つまたは4つのブラウザをテストし、それぞれに合わせてコンテンツを提供します。[2]ユーザーがテストされていないユーザーエージェントを使用している場合、使用可能なページが提供される保証はありません。そのため、ユーザーはブラウザを変更するか、そのページを回避することを余儀なくされる場合があります。ウェブページの構築に関する標準を定めるワールドワイドウェブコンソーシアムは、ウェブサイトをその標準に従って設計し、特定の標準に対応できないブラウザに表示された場合は「適切に失敗する」ようにすることを推奨しています。
ブラウザスニッフィングはメンテナンスの必要性を増加させます。一部のブラウザを異なる方法で扱うウェブサイトは、他のブラウザ用の代替バージョンを提供する必要があります。ユーザーエージェント文字列の使用は、開発者が「 Firefox 」ではなく「 Gecko 」など、適切な部分をチェックする必要があるため、エラーが発生しやすくなります。また、将来のバージョンがサポートされていることも確認する必要があります。さらに、一部のブラウザではユーザーエージェント文字列を変更できるため、この手法は役に立ちません。[3]
参照
- コンピュータプログラミング
- ウェブ
- ウェブブラウザ
- 機能検出 (Web 開発) (一部のコンテキストでは「ブラウザ スニッフィング」と同義)
- ブラウザのフィンガープリント
- ドキュメントオブジェクトモデル
- ユーザーエージェント
- ウェブ標準
- コンテンツスニッフィング
参考文献
- ^ Meiert, Jens (2021 年 7 月 14 日). Web 開発用語集. Frontend Dogma.
- ^ 「ユーザーエージェントを使用したブラウザ検出」。mdn web docs 。 2022年8月23日閲覧。
- ^ Ross, David E. (2012-11-29). 「"プロフェッショナル" Web 開発者」。2013-07-31 時点のオリジナルよりアーカイブ。2024-10-17閲覧。
