[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 メーリングリストの案内