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 = ? ;
としてあげて、値を入れる形にしてあげれば
対策をすることができます。