私はどこでも、私のクエリのためのPHP PDOを使用していますが、私は非常にまれな例ではまだ危険な変数が別のステートメントで使用されるときに実行後、保存されている「二次注入」があるかもしれないことをお読みください。2次SQL攻撃を防止するにはどうすればよいですか?
準備文でこれを防ぐことはできますか?私が確かに私は常にそれらを使用しますか?それとももっと予防措置を取らなければならないのですか?私はまだXSS攻撃に脆弱ですか?
は、私はまた、あなたのすべてが気にしない場合は、単に好奇心から、カップルより多くの質問がある:
には英数字、スペースでSQLインジェクションを持っていることは可能ですし、1つのダッシュ?
select * from something where name='$some_variable'
のように。私が見たすべての例は、セミコロン、引用符、二重ダッシュなどの他の文字を必要とするようです。私は、安全でない変数が別の文を形成するように設定することができ、多くのSQLの例、例えば
$foo = "foo'); INSERT INTO users (name) VALUES ('hi"; $bar = ("INSERT INTO users (name) VALUES ('$foo')");
を読んだしかし、私はちょうどテストとmysql_query
にも複数の文を許可していません。私はあなたがまだ1つのステートメント内に注射を持つことができることを知っていますが、PHPで複数のステートメントに問題がないことを確認できますか?データはコマンドとしてSQLエンジンによって読み取られるとき
2次攻撃とは、データデータベース - >クエリ - >データベースを丸呑みしていることを意味します。「ローカルソース」のデータだけを使用していても、自分自身を挿入できます。 –