📝
【SQL】プリペアードステートメントのすすめ
Zenn で記事を書いていきます。
最初に書くのはプリペアードステートメントのすすめについてです。
みなさん、ソースコード上で SQL を使う時にはプリペアードステートメント (?
とか :hoge
) を使いましょう。
以下に挙げる特殊文字に起因する脆弱性やエラーを未然に防げます。
SQL インジェクション対策
プリペアードステートメントで値を埋め込むと '
などの特殊文字をただの文字列として解釈してくれます。
そのため、SQLインジェクション対策になります。
Syntax Error 対策
特殊文字をただの文字列として解釈してくれるため、それに起因する Syntax Error を未然に防げます。
例えば、 O'Conner
を直接埋め込んで WHERE name = 'O'Conner'
にしてしまうと、十中八九 Syntax Error が発生します。
このため、 '
は ''
に変換するなどしてエスケープしないといけませんが、プログラム側での特殊文字のエスケープは面倒ですし、エスケープ対象に漏れがあると大変です。
プリペアードステートメントで値を埋め込むことでエスケープせずともただの文字列として解釈してくれるので、エスケープ漏れを心配する必要がなくなります。
まとめ
特殊文字を直接埋め込んでしまうと面倒なことになるので SQL をプログラム上で利用する時はプリペアードステートメントを使いましょう。
Discussion