Is it just as likely that I might suffer a sql injection on a query to the database (SELECT) as using UPDATE, INSERT etc?
I'm updating to PDO, so should I use 'prepare/exec' when querying the DB, or only when updating?
Is it just as likely that I might suffer a sql injection on a query to the database (SELECT) as using UPDATE, INSERT etc?
I'm updating to PDO, so should I use 'prepare/exec' when querying the DB, or only when updating?
クエリ(ユーザー入力)で変数を使用している場合は、選択クエリまたは挿入/更新のいずれかです。
selectクエリのように、where句で変数を渡している場合、SQLインジェクションを防ぐためにmysqlにPDOを使用する必要があります。
例: これはクエリです。
select * from login where username = '$username' and password= '$password';
次に、ユーザーが入れようとすると
$username ='admin \' OR 1=1';
コンパイルされたクエリは次のようになります
select * from login where username = 'admin' OR 1=1 and password= '...';
(この方法も間違っています。ログインテーブルからユーザー名を確認し、ユーザーに応じてパスワードを取得してから、言語コードを介して一致させる必要があります。)しかし、例として、選択クエリも注入できます。
同様に参照してください:
SQLインジェクションを処理する必要があるクエリで入力(変数)を渡す場合は、挿入、更新、選択、または削除を気にしないでください。
ここで最良の答えを見つけることができます