トピックス 2020.12.30 SQLインジェクションでウェブサービスを攻撃する方法〜対策編〜
前回の記事では、ウェブサービスのデータベースを攻撃するSQLインジェクションの手法について検証を行いながらそのプロセスを解説しました。
SQLインジェクションの対策は、消費者側よりもウェブサイトやウェブサービスを提供する運営側で行うことが求められる内容になりますが、その裏側の仕組みについて今回の記事では見ていきましょう。
SQLインジェクションによる攻撃を防ぐためのポイント
SQLインジェクションは、入力欄に不正な文字列を入力することで、システムの内部で実行されるSQLの構文を変更する攻撃のため、対策としては想定外の情報が入力された場合の対応を行なっていくことが基本的な方針となります。
エスケープ処理
SQLインジェクションの代表的な対策の1つがエスケープ処理です。エスケープ処理は、シングルクォート(’)やセミコロン(;)などSQLの命令の中で特別な意味を持つ文字や記号が入力された場合、それを別の文字に書き換えるように処理することです。エスケープ処理を行うことで、不正なSQLの命令文が送り込まれた場合でもそれを無効化することができます。
バリデーションチェック
バリデーションチェックとは、ユーザーが入力する値などについて、不正な内容や入力することを認めていない文字や記号が入力されていないかをチェックする処理のことを指します。エスケープ処理が不正な命令文が送り込まれた場合の対策であるのに対して、バリデーションチェックはそもそも不正な命令文を送り込ませないための対策です。
SQLインジェクションに限らず、サイバーセキュリティの対策は複数の対策を組み合わせて行うことでリスクをより低いものにすることができます。
ここでご紹介した2つの方法以外にも、サービス提供のために利用しているサーバーのOSやアプリケーションのアップデート、ファイアウォールの利用、定期的な脆弱性診断の実施など複数の対策を行うことが大切です。
終わりに
SQLインジェクションは、攻撃を受けていることに気づきにくく、被害が発生していることに気づいたら大きな被害が発生していることも十分にありえます。
個人情報の漏えいは、信用の失墜や多額の損害賠償などにもつながってしまいかねませんので、ウェブサイトやウェブサービスの運営時にはしっかりとした対策を行うことが求められます。
その上で対策を行なった後も被害を受けていないか、対策に問題がないかを定期的にチェックすることが重要です。
【関連リンク】
SQLインジェクションでウェブサービスを攻撃する方法〜導入編〜
https://securitynews.so-net.ne.jp/topics/sec_20107.html
SQLインジェクションでウェブサービスを攻撃する方法〜実践編〜
https://securitynews.so-net.ne.jp/topics/sec_20108.html
TEXT:セキュリティ通信 編集部
PHOTO:iStock