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