【問108】情報・サイバーセキュリティ管理士 練習問題|SQLインジェクション
サイバー攻撃と防御 問8/25難易度A(易しい)
問題文
SQLインジェクション対策として、最も有効なものはどれか。
- 1.SQL文を組み立てる際にプレースホルダを用い、値を変数として渡すようにする
- 2.通信路をTLSで暗号化し、入力内容が盗聴されないように保護するようにする
- 3.利用者のパスワードに有効期限を設け、定期的な変更を義務付けるようにする
- 4.Webサーバのアクセスログを長期間保存し、事後の追跡ができるようにする
解説
正解は1。SQLインジェクションとは、Webアプリケーションの入力値がSQL文の一部として解釈されることを悪用し、データベースの情報を不正に取得・改ざんする攻撃である。最も有効な対策は、SQL文の雛形をあらかじめ用意して値の位置にプレースホルダ(バインド機構)を置き、入力値を文字列連結ではなく変数として渡す方法である。これにより入力値がSQL構文として解釈される余地がなくなる。IPAの安全なウェブサイトの作り方でも根本的解決策として示されている。2は誤り。TLSは経路上の盗聴を防ぐが、正規の経路で送られる不正な入力値は防げない。3は誤り。パスワードの定期変更は認証の運用であり、入力値の解釈とは無関係である。4は誤り。ログ保存は事後の追跡に役立つが、攻撃の成立自体は防げない。