セキュアなシステム開発・品質管理
あるWebアプリケーションの開発チームが、ユーザー入力をそのままSQL文に連結してデータベースに問い合わせる実装をしていたところ、セキュリティレビューでSQLインジェクションの脆弱性が指摘された。この脆弱性に対する修正方法として最も適切なものはどれか。
- ✓プレースホルダ(バインド機構)を用いたSQL文を実装する
- Bユーザー入力の文字数を制限する
- Cデータベースサーバのファイアウォールルールを見直す
- Dエラーメッセージを日本語化して詳細情報を隠す
解説
SQLインジェクションの根本対策は、SQL文の構造とデータを分離するバインド機構(プレースホルダ)の使用である。文字数制限やエラーメッセージの変更は緩和策にはなり得るが、根本対策にはならない。
根拠IPA「安全なウェブサイトの作り方」SQLインジェクション対策 / シラバス「情報及び情報システムの利用におけるセキュリティ対策の適用」