ブラウザがwebサーバーからの情報を解釈する順序[備忘録]

自分の勉強用です。

PHP、HTML、CSSのファイルで構成されたwebページをブラウザで表示する時のブラウザとwebサーバーの間で起こっている通信の順序について。

 

  1. WEBブラウザにURLを入力する
  2. URLに含まれるドメイン(WEBサイトの住所)をDNSサーバーに問い合わせる
  3. DNSサーバーはドメインに紐づくIPアドレスを特定する
  4. DNSサーバーからIPアドレスが送信される
  5. 取得したIPアドレスのWEBサーバーにデータを要求
  6. WEBサーバーは、HTML、CSSPHPなどのコンテンツを返す
  7. WEBサーバーから返されたデータをWEBブラウザで表示する。

今回は、ここの5,6,7について、詳しく見ていこうと思う。

 

ブラウザのフォームに入力されたPHPJavaScriptスクリプトは、文字列としてサーバーに渡される。

これは、ブラウザがクライアント側のアプリケーションであり、サーバー側に送信するデータを文字列として扱うことができるから。

サーバーはこの文字列を処理するために必要なアプリケーションを使用する。

Apacheなどの、サーバーにインストールするソフトウェアに、PHPのモジュールを追加することで、サーバー側でPHPの解釈と実行が可能。

 

WEBアプリケーションは、多くの場合、ユーザーからの入力を受け取って処理を行う。

しかし、不正なデータや攻撃的なコードがサーバーに送信される場合、このアプリケーションを乱用することができる。

 

例えば攻撃者がWEBフォームに入力する際に攻撃的なPHPコードを含めることができる。

このようなコードは、サーバー上で実行され、不正なアクションを引き起こす可能性がある。

これには、

・サーバー上のデータの破壊

・不正なアクセス

・個人情報の漏洩などが含まれる

 

このような理由から、サーバーは通常、入力されたデータを適切にフィルタリングし、不正なデータや攻撃的なコードを除外したり、アプリケーションで使用するコードを正当なものだけに限定することが大事。

 

そのためにXSS対策やSQLインジェクション攻撃対策などが必要。

 

WEBサーバーでPHPスクリプトを実行しHTML文字列に埋め込む。

これをブラウザにレスポンスとして送り、ブラウザはHTMLやCSSを解釈し構築し、WEBページに表示する。

 

なので、XSSでよく使われる<script></script>はHTMLのタグだし<a href =></a>もHTMLのタグ。

WEBサーバーから帰ってくるのは、PHPの埋め込まれたHTMLファイルなので、XSSも読み込んでもらうためにHTMLタグを使って行う。

ただ単にPHPJavascriptのコードをブラウザから送信しても、スクリプトはサーバーサイドで処理されるものなので、HTML側で実行結果を表示出来ないし意味がない。