脆弱なWebアプリケーションから脱却する5つのコツ:個人情報保護時代の情報セキュリティ(2/3 ページ)
ショッピングサイトのように多くの個人情報を扱うWebサイトを運営しているのであれば、Webアプリケーションの脆弱性について早急に対策を取るべきだ。Webアプリケーションの安全性を高めるために考えられる対策として5つの方法を提案したい。
テスト項目
アプリケーションの開発において、テストは必須作業である。脆弱性の発生原因の1つは、このテストが不十分であるという点にある。Webアプリケーションの検査では、入力チェック漏れやサニタイジング漏れの検査を行うが、本来であれば、これらの検査は開発時のテスト工程で行うべきものだろう。
例えば、最近騒がれているSQLインジェクションについては、シングルクォート「'」の入力や、「' or 1=1--」といった文字列を入力した場合の反応をチェックするテストを行うとよい。SQLインジェクションは、これらの文字列の入力だけで確認できるわけではないが、少なくとも、これら文字列を入力した場合にエラーが発生したり、間違った動作をしたりしなければ、完璧ではないものの、最低限の目安にはなるだろう。実際のテストでは、脆弱性ごとの入力パターンをテスト項目に含めるようにすることを推奨する。
以下に簡単ではあるが、代表的な脆弱性を調べるための入力パターンと確認方法を示す。もちろん、これだけではなく、もっと入力パターンを増やしてもよい。なお、これらのテストはデータ破壊やシステム停止を引き起こす可能性があるため、必ずテスト環境で実施するようにしてほしい。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Buffer Overflow
操作:5000バイトの長さの文字列を入力
確認:言語処理系やDBドライバなどが直接エラーを出力したりしないか? 誤動作しないか?
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Cross Site Scripting
操作:「'>"><script>alert()</script>」を入力
確認:アラートボックスが表示されるか?
操作:任意の文字列(例:abc)を入力
確認:次に表示される画面内のフォームに含まれるか? 含まれるなら、value属性がしっかりとクォートされているか?
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Parameter Manipulation
操作:数値パラメータの場合、(元の値-1)、(元の値+1)としてみる
確認:異なる機能が実行されたり、本来アクセスできるべきでない情報が表示されたりするか?
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Session Exploitation
操作:連続してセッションIDを発行させてみる
確認:それらのセッションIDに規則性はあるか? 発行されるセッションIDが推測できる場合、推測したセッションIDを使ってアクセスし、他人になりすますことができるか?
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
SQL Injection
操作:シングルクォート「'」を入力
確認:DBドライバのエラーメッセージが表示されるか?
操作:「' or 1=1--」を入力
確認:認証バイパスや、テーブル内の全レコードへアクセスできたりするか?
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
OS Command Injection
操作:「||/bin/date|」(Unix系のサーバを想定)
確認:時刻が出力されるか?
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Cross Site Request Forgeries
操作:処理をコミットするリクエストで送信されるパラメーターの一覧を見る
確認:Cookie以外のパラメータに、他人が推測できないパラメーターを含んでいるか? Cookie以外のパラメータがすべて推測可能であれば脆弱だ。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Copyright © ITmedia, Inc. All Rights Reserved.