photo credit: Injection, Inject via photopin (license)
安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構の、「SQLインジェクション」から一部抜粋する。(この資料はPDFでしか提供されていない)
注意が必要なウェブサイトの特徴
SQLインジェクションの脆弱性があるウェブアプリケーション運営主体やウェブサイトの性質を問わず、データベースを利用するウェブアプリケーションを設置しているウェブサイトに存在しうる問題です。個人情報等の重要情報をデータベースに格納しているウェブサイトは、特に注意が必要です。
根本的解決
- (i)-a SQL文の組み立ては全てプレースホルダで実装する。
- (i)-b SQL文の組み立てを文字列連結により行う場合は、エスケープ処理等を行うデータベースエンジンのAPIを用いて、SQL文のリテラルを正しく構成する。
- (ii) ウェブアプリケーションに渡されるパラメータにSQL文を直接指定しない。
保険的対策
- (iii) エラーメッセージをそのままブラウザに表示しない。
- (iv) データベースアカウントに適切な権限を与える。
関連CWE
- CWE-89: SQL インジェクション
- CWE-89: Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’) (2.8)
参考URL
- IPA: 安全な SQL の呼び出し方
- IPA: 知っていますか?脆弱性 (ぜいじゃくせい) 「1. SQL インジェクション」
- IPA: 「2014 年度情報セキュリティ事象被害状況調査」報告書について