独立系プログラマー育成ブログ | SENSE SHARE

SQLのプレースホルダはどういった目的で使われるのでしょうか?

SQLのプレースホルダはどういった目的で使われるのでしょうか?

SQL文の中にある「:変数名」(プレースホルダ)はどういった目的で使われるのでしょうか?

 


プレースホルダは、SQL文の中で「ユーザーが入力した値」を代入する箇所に使用します。


例えば以下のようなSQL文があった場合、

INSERT INTO user (user_screen_name) VALUES ('ハルジオン');

末尾にある「ハルジオン」という部分は、ユーザーによって入力される値です。
(逆に、他の部分は固定文となります)


プレースホルダを使わずに、上記のようにユーザーから入力された値を直接SQLに結合してしまうと、
万が一、悪意のあるユーザーによって不正な値が入力された場合、
SQL文が壊れてしまったり、別のSQL文に変えられてしまう恐れがあります。

こういった攻撃手法を「SQLインジェクション」と言います。


これに対策するために、以下のようにプレースホルダを使います。

INSERT INTO user (user_screen_name) VALUES (:user_screen_name);

プレースホルダを使うと、その部分はあくまで「値」として処理し、
SQL文として実行されることはなくなりますので、安全に実行出来るというわけです。


セキュリティ対策については、講座の中でも実験を交えながら学習していきますが
SQLの書き方は今の内からこのように癖づけておきましょう。

SQLのプレースホルダはどういった目的で使われるのでしょうか?

この記事があなたのお役に立てたなら、
いいね!クリックをお願いします!