|
カテゴリ:データベース
今日はSQLインジェクション対策について、ちょっと悩み事です。
私がデータベースで主に利用するのはMySQLです。 しかし、開発環境によってはPostgreSQLやOracleを利用する場合もあります。 何となく察していただけたと思いますが、つまるところ 「各開発環境に最適なエスケープ処理は何なのか?」 という事で悩んでいます。 SQL文では必ず値をシングルコーテーションで囲むようにしています。その値に含まれるシングルコーテーションをエスケープ処理する方法が、ちょっと問題なのです。 先月の日記で、シングルコーテーションはシングルコーテーションでエスケープ処理してあげる。という内容を書きました。 しかし、MySQLはバックスラッシュでエスケープしてあげます。 (mysql_real_escape_string関数を通した値を見ると、バックスラッシュによってエスケープしてある) でも、PostgreSQLでシングルコーテーション自身でエスケープさせてあげると、エラーも起こさずちゃんと動きます。 Oracleで開発したときはバックスラッシュではなく、シングルコーテーションでエスケープしてあげました。 こんな感じでちょっと混乱中です。 Googleで検索かけてみると、バックスラッシュについての記事が圧倒的に多いです。 もうホント大混乱です(@_@) 大抵はその環境に合わせた関数(mysql_real_escape_stringとか)を利用しますが、その関数が使えなかった場合にどうするか!? 私はシングルコーテーション自身でエスケープ処理してあげています。 これが本当に正しいのかどうか・・・なんかちょっと不安になりました。 おしまい お気に入りの記事を「いいね!」で応援しよう
Last updated
2007.04.28 10:56:13
コメント(0) | コメントを書く
[データベース] カテゴリの最新記事
|