#はじめに
ここ2週間ほどWeb技術に関する入門書を読んでいました。
本日、読了したのでその中でも特に勉強になったと思われるセキュリティに関する部分をザックリとアウトプットしていこうと思います。
かなり基礎的な内容になりますので、軽めに読み進めたい初心者向けです。
#Webアプリケーションが守るべきセキュリティとは
大きく分けて3つ。
-
第三者への情報流出を防ぐこと(機密性)
(情報→Webサービスで利用している個人のログイン情報や、クレジットカード情報など) -
第三者による情報の改ざんを防ぐこと(完全性)
(情報→Webサービスで利用しているショッピングポイントや口座残高の情報など) -
適切な権限を持った人間が適切な情報を利用できること(可用性)
(情報→クライアントユーザーに紐づいた情報)
これら一つでも許してしまったらユーザーへの信頼を失ってしまうので、セキュリティに対する情報はその都度アップデートして対策を施していく必要がある。
#代表的な攻撃手法と対策
###①SQLインジェクション
入力フォームを利用して、データーベースに発行されるSQLを開発者が意図しない形に変更する事で情報の不正取得や改ざんを行う攻撃。
【対策手法】
- プログラム上で入力値のチェックを行う事。
- プリペアドステートメントを使用する事。
###②クロスサイトスクリプティング(XSS)
HTMLの中に悪意のある動作をするJavaScriptを埋め込む事による攻撃。JavaScriptインジェクションとも呼ばれる。
【対策手法】
- サニタイジングと呼ばれる処理が有効。HTMLに使用される特殊文字を文字参照に置き換える事。
###③セッションハイジャック
クライアントとサーバの間でやりとりされているセッションIDを他者が盗みとる事で、Webサイトの利用者になりすましてサービスを利用してしまう攻撃。
【対策手法】
-
前述したXSS対策をして脆弱性を無くしておくことがセッションハイジャックに対する対策にもなる。
-
通信経路の暗号化。セッションIDを受け渡す通信路をSSL化すること。
-
セッション・タイムアウト値の変更。重要な情報を扱うWebアプリケーションでは、セッション・タイムアウトの時間を短めに設定することで万が一セッションIDを盗まれても悪用される危険性を減らすことができる。
-
セッションIDのランダム化。現在は開発者自身がセッションIDを実装する必要性はないため、このような心配をすることはない。
###④クロスサイトリクエストフォージェリ(CSRF)
攻撃者が捏造したフォームから強制的に情報を送信することで、開発者の意図しない操作を実行されてしまう攻撃。
【対策手法】
- ワンタイムトークン。Webブラウザにformを表示する際にサーバはワンタイムトークンと呼ばれるランダムに生成された数字や文字列を用意して記憶しておく。そのワンタイムトークンをformの内部にhiddenパラメーターとして埋め込んでおく。
そしてフォームからサブミットされて際に自サーバから発行したワンタイムトークンが認識されれば正しいサブミットとして受け入れる。
※CSRFは正規のサーバ以外が作成したフォームによる攻撃のため、この手法によって防ぐことができる。
###⑤強制ブラウズ
WebブラウザのアドレスバーにURLを直接入力することで、本来表示されるべきではない画面を表示させる攻撃。
【対策手法】
- リクエストを要求しているクライアントに表示させる内容であるか、各ページにバリデーション対策をする。
#最後に
最後まで読んでいただきありがとうございました。
冒頭でも書きましたが、Webサービスに対する攻撃手法は日々新しいものが出現し、
セキュリティ対策とはイタチごっこのように行われているものです。
その中でも今回は代表的な攻撃手法をまとめました。
参考書の内容を自分なりにかなり短くまとめたような感じになってしまいましたが、もっと詳しく勉強したい方は
ぜひ実際に書籍を読んでみることをオススメします。
私のようなエンジニアとして働き始めたばかりの方にはピッタリの内容だと思いました。
#参考書籍
プロになるためのWeb技術入門 - 小森裕介