[pgsql-jp: 39294] Re: 'encoding "EUC_JP" has no equivalent in "UTF8"' の理由

Tatsuo Ishii ishii @ sraoss.co.jp
2008年 3月 25日 (火) 12:23:03 JST


> 原田です。
> 
> > 以前はエンコーディング変換エラーの際に,変換できない文字をスキップして
> > エラーにしていなかったのですが,それを利用した攻撃が可能であることが判
> > 明し,現在の仕様に修正されたという経緯があります.
> 
> なるほど、そういう経緯があったとは知りませんでした。
> 最近の話題にも関わらず乗り遅れておりお恥ずかしい限りです。
> 
> しかし、下記のようなチョイスはないものかと考えています。
> 
> ・テーブルデータを出力するなどの脆弱性と関係がない状況ではエラーではなく警告とする
> ・エンコーディングできない文字列バイトは一律'?'などに置き換える
> 
> 前者については、出力の不正エンコーディングに脆弱性があるのかどうか理解していません。

どうなんですかねぇ.2nd order SQL injectionとかいう話もあるし...  また,
「入力時に正しくエンコーディングチェックできていればあり得ないはずなの
で,対応するだけ無駄.却下!」って開発者に言われそうです.

> 後者については、'?'がふさわしいかどうか不明です。

それよりも,代替文字に置き換えること自体が本当に安全かどうか,私には確
信がありません.

> とはいえ、現在の仕様だとどこにその不正な文字が隠れているか
> 発見が困難ということもあり、どうにかならないものかと考えています。

データチェック用のユーザ定義関数を作って,検査だけ別に行えるようにする
のが良いと思います.作るのはそんなに難しくないのですが,今いろいろとと
りこんでいて,時間が取れません...
--
Tatsuo Ishii
SRA OSS, Inc. Japan

> Hitoshi Harada
> 
> 08/03/25 に Tatsuo Ishii<ishii @ sraoss.co.jp> さんは書きました:
> > 石井です.
> >
> > > データベースをEUC_JPで構築し、PgAdminでアクセスした際に、
> > > encoding "EUC_JP" has no equivalent in "UTF8"
> > > というエラーが発生することが時々見受けられます。
> > > もちろんこの原因はメッセージの通りだと理解できるのですが、
> > > これを「エラー」として扱う必要ってあるのでしょうか??
> > >
> > > たとえばJavaだと、エンコードできない文字については
> > > ??
> > > のように所謂「文字化け」として扱われ(、スルーされ)ると思うのですが、
> > > PostgreSQLでエラーとして処理を止めるのは、何か理由があるのでしょうか。
> >
> > 以前はエンコーディング変換エラーの際に,変換できない文字をスキップして
> > エラーにしていなかったのですが,それを利用した攻撃が可能であることが判
> > 明し,現在の仕様に修正されたという経緯があります.
> >
> > 詳細はこちら.
> >
> > http://itpro.nikkeibp.co.jp/article/COLUMN/20060530/239359/
> > --
> > Tatsuo Ishii
> > SRA OSS, Inc. Japan
> >



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