今回の連休でWebアプリケーションを開発するにあたり、留意する必要のあるセキュリティ対策について学習したため、Webアプリの攻撃手法と対策について学んだことを記録する。
SQLインジェクション
近年よく利用されるものの一つ。これはWebフォームなどの入力インターフェースを利用してデータベースに発行されるSQLを開発者が意図しない形に変更することで、情報の改ざんや不正取得を行う方法。
SQLインジェクションによって第三者による不正なログイン、閲覧権限のない情報へのアクセス、データベースの不正改ざんや削除といった攻撃を許すことになる。
対策について
最も有効な方法は入力値へのチェックを行うこと。
パスワードの入力において半角英数字のみを受け付けるようにすれば、SQLインジェクションで利用される「']
の混入を防げられる。
プリペアード・ステートメント
もう一つの方法として、プリペアード・ステートメントがあげられる。
文字列連結でSQLを組みたてるのではなく、WHERE句などを条件によって変化する部分をプレースホルダーとして登録したSQLを事前に用意しておき、あとからパラメータをわりふる方法だ。
XSS(クロスサイトスクリプティング)
クロスサイトスクリプティングはSQLインジェクションと同じように、HTMLの中に悪意のある動作をするJavaScriptを埋め込み、攻撃する手法である。
クッキーの盗難やページの改ざんなどが実行される恐れがある。
その結果、不正ログインや個人情報の流出といった問題につながる恐れがある。
対策について
対策としては、HTMLへ文字列を出力する際に「サニタイジング」と呼ばれる処理が有効である。
これはHTMLに埋め込むと元のHTMLの構造を変更したり、破壊する文字列を、削除したり無害な文字列に変換したりする処理のことをいう。