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

この記事は約 2 分 で読むことができます。

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のプレースホルダはどういった目的で使われるのでしょうか?
この記事はあなたのお役に立てましたか?

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

あなたも楽しくプログラミングを学んでみませんか?

コメントを残す