[pgsql-jp: 36853] Re: client encoding と PQexec

Koichi Hyodo sio-0 @ rh.to
2006年 3月 10日 (金) 09:07:45 JST


兵藤です

> From: Jun Kuriyama <kuriyama @ imgsrc.co.jp>
> Date: Thu, 09 Mar 2006 23:44:40 +0900
> Subject: [pgsql-jp: 36852] Re: client encoding と PQexec
> 
>>>  重村氏とやんややんやと議論してみたのですが、彼も DBD::Pg が SJIS を
>>> 意識した quote をしないのがダメ、といっています。というよりも、quote
>>> をサーバ側に任せないで自前でやっているのがダメ、というのが根本的なとこ
>>> ろな気がしています。
>> 
>> サーバ側というのは,PostgreSQLのバックエンド側ということですか?でも,
>> クライアント側でescape処理をしなかったら,SQLインジェクションがやり放
>> 題になりませんか?
> 
>  言葉足らずで申し訳ありません。
> 
>  libpq を使うクライアント側が入力の escape を行う、というのはもちろん
> なんですが、(少なくとも私の場合)多くの場合は placeholder を使うので、
> 明示的に値を escape する、ということはその場合はしていません。


外しているかもしれませんが、エスケープ処理をlibpqの
PQescapeString関数で行うように修正できないでしょうか ?

http://www.postgresql.jp/document/pg813doc/html/libpq-exec.html#LIBPQ-EXEC-E
SCAPE-STRING

この関数はそれなりに古いバージョンのlibpqにも用意されているようです。
少なくともencodingに関わらず決め打ちでquoteするよりはよさそうに思います。




Ps.
... というアイデアを以前Python関連の方からいただきました。





pgsql-jp メーリングリストの案内