SQLインジェクションとプレースホルダ

SQLインジェクションとは?

簡単に言うとMySQLによる仕組みを逆手に取り 作った人の意思に反するような動きをさせられてしまうことです。

悪意のあるユーザだと、個人情報が漏洩してしまったりと 大変なことになってしまうケースも考えられます。

SQLインジェクションの具体例

例えば、

$username : user1
$userpass : user

ログインページでこのように、名前とパスワードが登録されていたとします。 これをデータベースと照合するのに

SELECT * FROM user_info WHERE name = 'user1' AND password = 'user1';

が用いられたとします。

$userpass : ' OR 'A' = 'A

としてあげると

SELECT * FROM user_info WHERE name = 'user1' AND password = ' OR 'A' = 'A;

この様になってしまいログインできてしまうのです。

プレースホルダで対策

そのようなSQLインジェクションの対策として

プレースホルダと言われる対策をします。

SELECT * FROM user_info WHERE name = ? AND password = ? ;

としてあげて、値を入れる形にしてあげれば

対策をすることができます。