mysql:7907
From: Shinichi Nouzumi <Shinichi Nouzumi <nouzumi03@xxxxxxxxxx>>
Date: Mon, 16 Jun 2003 18:32:26 +0900
Subject: [mysql 07907] Re: クォーテーションのある文字列の登録
> > > > $sql = sprintf("UPDATE usertbl SET name = '%s'",$sql); > > > > > > > > この sql 文を実行したところ MySQL には、 > > > > 能銀\" と、\ 文字が付加されてしまいます。 > > > > > > PHP上で、ここでの$sqlを表示させてみてください。 > > > > $str = '能銀"'; > > echo mysql_escape_string($str); > > > > とした場合、「能銀"」は正しく、クォートされ > > 「能\銀\"」 > > と表示されています。 > > 一つの変数 $str しか使っていないので、混乱しますが、見たかったのは > $sql = sprintf("UPDATE usertbl SET name = '%s'",$sql); > を実行したあとなんですけど。 すみません。コードも間違えていたようです。 $str = '能銀"'; $str = mysql_escape_string($str); $sql = sprintf("UPDATE usertbl SET name = '%s'",$str); echo $sql; とした場合、表示は UPDATE usertbl SET name = '能\銀\"' となります。 > ええと、なんで mysql_escape_string のようなエスケープを > する関数が用意されているのかを考えてもらうと、そのやりかた > だとセキュリティホールが生ずる可能性があるので、避けた > ほうがよろしいかと。 > # SQLインジェクションなど PHP のマニュアルに書いてあったのですが、 やっぱりそうですか・・・。 mysql_escape_string を使わず、addSlashes を利用しても、 同様の結果です。 やはり、PHP 側の問題かな・・・。 ありがとうございました。
7899 2003-06-14 12:15 [Shinichi Nouzumi <no] クォーテーションのある文字列の登録 7903 2003-06-16 16:09 ┗[IWASAKI Dai <dai@xxx] 7905 2003-06-16 17:57 ┗[Shinichi Nouzumi <no] 7906 2003-06-16 18:12 ┗[IWASAKI Dai <dai@xxx] -> 7907 2003-06-16 18:32 ┗[Shinichi Nouzumi <no]