Webセキュリティ入門:HTTP・Cookie・脆弱性
ブラウザとサーバーの役割
この回でやること
ブラウザとサーバーの役割を分け、画面の裏で誰と誰が話しているのかを見ます。信用してよい側とそうでない側の区別が付きます。
- 読む 約 5 分
- 最後にクイズ 1 問
このレッスンで学ぶこと
ブラウザとサーバーは、1つのWebサービスを2つの離れた場所に分けて動かしています。この回では、画面の裏で誰が誰に何を渡しているのかを整理します。
読み終えるころには、2つの場所のどちらで確かめた事実を根拠にしてよいかを言えるようになります。
2つの場所でコードが動く
Webサービスのコードは、2つの離れた場所で動いています。
ブラウザ側は、利用者のパソコンやスマートフォンの中です。HTML、CSS、JavaScript がここに届いて動きます。
サーバー側は、運営者が用意した機械の中です。データベースを読み書きし、誰が何をしてよいかを決めます。
この2つは、ネットワーク越しに文字列をやり取りしているだけです。直接つながってはいません。
境目の内側と外側
ここが今回の要です。ブラウザ側は、運営者のものではありません。
利用者の機械の中にあるので、利用者は中身を全部見られます。JavaScript を読むことも、書き換えることも、そもそも実行しないこともできます。送信の直前に値を差し替えることもできます。
つまりブラウザ側でやっている確認は、親切な案内であって防御ではありません。
入力欄に「10文字まで」と書いてあっても、送られてくる値が10文字である保証はありません。ボタンを隠しても、その先の処理が呼ばれない保証はありません。
では何を信じるのか
信じてよいのは、サーバー側で自分が確かめた事実だけです。
- 届いた値が想定の形かどうか
- その利用者が本当にその操作をしてよいのか
- 値段や在庫のような決めてよい人が決めるべき数
これらは全部サーバー側で決め直します。ブラウザから送られてきた値をそのまま採用した瞬間、決める権限を利用者に渡したことになります。