応用情報技術者
セキュリティ
SQLインジェクション攻撃の対策として、最も適切なものはどれか。
1.
入力値に対してプレースホルダを利用し、エスケープ処理を行う。
✓ 正解
2.
WebサーバーのOSを最新の状態にする。
3.
パスワードの最低文字数を10文字以上にする。
4.
ファイアウォールで特定のポートを遮断する。
📝 解説
SQLインジェクションは「Webフォームに悪意ある入力でデータベースを乗っ取る」攻撃です。ログイン画面でユーザ名に「'' OR ''1''=''1」と入力すると、SQL文が「WHERE ユーザ名='''' OR ''1''=''1''」となり常に真になって不正ログインが可能になります。これはユーザの入力がSQL文の「構造」を変えてしまうために起きます。料理のレシピに例えると、シェフが「材料を入れてください」と言ったのに、客がレシピそのものを書き換える命令文を入れてしまうようなものです。対策の最善手は「プレースホルダ(バインド変数)を使ったプリペアドステートメント」です。SQL文の骨格を先にデータベースへ渡し、後からパラメータとして値だけを渡す方法で、入力値がSQL文の構造を変えられなくなります。「SELECT * FROM users WHERE id = ?」の「?」がプレースホルダです。OSの更新・パスワード強化・ファイアウォールのポート遮断はSQLインジェクションの直接的な対策にはなりません。「SQLインジェクション対策の最善手=プレースホルダ(プリペアドステートメント)」と覚えましょう!',["入力値に対してプレースホルダを利用し、エスケープ処理を行う。"