ブラウザがwebサーバーからの情報を解釈する順序[備忘録]
自分の勉強用です。
PHP、HTML、CSSのファイルで構成されたwebページをブラウザで表示する時のブラウザとwebサーバーの間で起こっている通信の順序について。
- WEBブラウザにURLを入力する
- URLに含まれるドメイン(WEBサイトの住所)をDNSサーバーに問い合わせる
- DNSサーバーはドメインに紐づくIPアドレスを特定する
- DNSサーバーからIPアドレスが送信される
- 取得したIPアドレスのWEBサーバーにデータを要求
- WEBサーバーは、HTML、CSS、PHPなどのコンテンツを返す
- WEBサーバーから返されたデータをWEBブラウザで表示する。
今回は、ここの5,6,7について、詳しく見ていこうと思う。
ブラウザのフォームに入力されたPHPやJavaScriptのスクリプトは、文字列としてサーバーに渡される。
これは、ブラウザがクライアント側のアプリケーションであり、サーバー側に送信するデータを文字列として扱うことができるから。
サーバーはこの文字列を処理するために必要なアプリケーションを使用する。
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タグを使って行う。
ただ単にPHPやJavascriptのコードをブラウザから送信しても、スクリプトはサーバーサイドで処理されるものなので、HTML側で実行結果を表示出来ないし意味がない。