[PHP-dev 1497] Re: mbstring の文字列変換、文字エンコーディング検出の関連の問題について

Moriyoshi Koizumi mozo @ mozo.jp
2009年 9月 11日 (金) 12:16:30 JST


小泉です。

2 つの観点から有用性を疑っています。

まず、概念的な部分です。エンコーディングをバリデートするという発想は正しいですが、mb_check_encoding()
は、ユーザに簡易な方法で正しい対処をさせるという手段としては不十分かと思います。不正なバイト列が発見された場合にどう処理すればいいのか、というところが見えてこないからです。

encoding_translation
を使い、毎度変換を行うことで、不正な文字をすべてフィルタできます。mb_check_encoding()
も結局は内部的に変換を行うことで不正なエンコーディングかをチェックしているわけですから、この方法で十分な処置が行えるかと思います。

もしよりきめ細かい対処が必要な場合は、自分でバリデート用の関数を用意すればいいですし、これをあえて mbstring
モジュールとして提供する必要はないかと思われます。

また、mb_check_encoding() は、全引数を省略したときの挙動にバグがあり、これを正しく直すことは困難です。

もう一点は、現在の mb_check_encoding()
自体の仕様に対するものです。正しい形式でエンコードされていればラウンドトリップが可能だという前提で処理を行っていますが、これは常に正しいわけではないというのが今回
komura さんの指摘してくださったポイントかと思います。正しくバリデートを行うためには、libmbfl 自体に手を入れる必要があります。

2009/8/29 Yasuo Ohgaki <yohgaki @ ohgaki.net>:
> 大垣です。
>
> PHPの脆弱性でもmb_check_encodingを使っていれば回避出来た脆弱性
> が幾つもあります。
>
>> # いろいろな意見があるかと思いますが、個人的には、mb_check_encoding() 自体の有用性を疑っています。
>
> ちなみに有用性を疑っているのは使い方の面でしょうか?
>
> これがあるだけエンコーディングチェックに関しては他の言語より随分
> ましとは思っています。海外アプリでは全く使われていないので無用の
> 長物になっている、という意見であれば同じです。
>
> --
> Yasuo Ohgaki
> yohgaki @ ohgaki.net
> _______________________________________________
> PHP-dev mailing list
> PHP-dev @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-dev
>


PHP-dev メーリングリストの案内