システム開発コラム集
システム開発に関するコラム集です。
12.悪意ある攻撃からシステムを守る技術-SQLインジェクション
ハッカーなどの悪意ある攻撃からシステムを守る技術をご紹介します。
インジェクションとは、注入と言う意味で、本来実行するべきSQL以外のSQLも注入するという意味合いです。データベースの内容を改竄したり、情報を盗みとったりする手法です。
原因:
サイト訪問者の入力により動的に表示条件や登録情報を更新する様なデータベースと連動したWebシステムやサイトでセキュリティが足りない部分を狙った攻撃です。
検索条件を入力すると検索結果一覧が表示される様な画面や入力した内容がデータベースへ登録される様な画面では、入力した内容が、SQL文に埋め込まれデータベースへ向かって命令を実行されます。入力部に検索させる条件以外の条件も追加してしまい、本来閲覧できない様なレコードも表示させてしまいます。
仕組解説:
対策:
対策としては、ダブルクォーテーション、シングルクォーテーション、アンダースコア、等のSQL文で意味を持つ文字をエスケープシーケンスでエスケープさせます。また、数値入力等は、数字以外の文字が入力されたかを入力文字チェックで監視させます。