2012-02-20 27 views
2

SQLインジェクションからSQLエスケープ文字列を使用せずにMySQLテーブルにデータをエスケープするにはどうすればよいですか?mysqlエスケープ文字列を使用しないエスケープ

PDOを使用し、複数のクエリをサポートしていないYiiフレームワークを使用しています。私は複数の挿入クエリを実行し、挿入されている値をエスケープする必要があります。

Yii::app()->quoteValue入力がmysqlに挿入されている箇所に二重引用符""が挿入されているため、機能しません。 SQLインジェクションを防ぐために使用できるPHP関数はありますか?

+2

プリペアドステートメントのパラメータとして値がある場合は、すでに安全です。 –

+0

PDOを使用している場合は、プレースホルダを正しく使用している限り、追加のエスケープを必要としないプリペアドステートメントを使用する必要があります。文字列で連結します。 –

+0

私は彼の問題は複数の挿入クエリを構築する必要があり、PDOを使用しているフレームワークが複数挿入クエリをサポートしていないと思います。 – nickb

答えて

-1

あなたは

$string = addslashes($string); 

にスラッシュを追加することができますしかし、私は、これは完璧な代替であることにカウントされませんので、あなたの代わりに、適切なMySQLの方法を試してみて、使用をお勧めします。

+2

上記の方法を使用すると、データベースからクエリを返すときに 'stripcslashes($ variable)'を実行する必要があります。 – Bot

+2

これは安全ではありません、addslashesはデータベースの入力を害する適切な方法ではありません。 – kingmaple

+1

これは私のコメントはお勧めしないと言っています:) – BenOfTheNorth