質問: sqlインジェクション 教えてください。 よろしくお願いいたします。 select * from table where user='$uid' and password='$pass' のエスケープ処理をしていない場合に、 id=aaa パスワード='or'a'='a と入力されると、 select * from table where user='aaa' and password="or 'a'='a' が実行されてしまいますが、 「password=」と「or」の間のダブルクォーティションは、 どのような意味を持つのでしょうか。
回答: >そうすると「''or 'a'='a'」は、どのシングルとどのシングルが対になっているのでしょうか? passwordは最初の2つのクォーテーションで終わりです。つまりpasswordは空ですね。で、そのあとに「 or 'a'='a'」という「常に真」となる式が論理和で付いているので、passwordの内容とは無関係に「常に真」になります(これがsqlインジェクションになるわけです)。