ユーザーからの入力を取得してデータベースに保存する Web アプリケーションがあるとします。さらに、セキュリティの脆弱性がないと仮定しましょう。ユーザー入力を正しくエスケープし、バインド パラメータを使用します。
データベースから取得したデータは、疑いを持って処理する必要がありますか (つまり、潜在的に汚染されている/悪意があるとして)?
例(試してみるのが怖いので結果はわかりません)。これはデータベースです:
create table mytable (id int primary key, name varchar(50));
create table othertable (name varchar(50), xyz int,
... `name` is an fk ...);
insert into mytable (id, name) values(1, '"abc"; drop table mytable;');
insert into othertable (name, xyz) values('"abc"; drop table mytable;', 45475);
次に、この疑似コードを実行します (おそらく PHP から):
# run query 'select * from mytable where id = 1';
# put the `name` in $name
# run query 'select * from othertable where name = $name'
# $name is not escaped, no other precautions taken