Hatena::Diary

岩本隆史の日記帳

Webアプリ開発に関する記事を書いています。他の話題(映画、音楽等)は別ブログで。

2009-10-06

htmlspecialcharsに関する残念なお知らせ

htmlspecialcharsのパッチ私案」に書いた件、バグレポートを出してみましたが、「すでに同じバグレポートがあるだろ」という理由により、あえなく却下されました。

せめて先方が「同じ」とみなしているレポート番号ぐらいは示してほしくて、そのようにコメントしましたが、お相手のjaniという人は気難し屋のようで*1、教えてもらえる気がしません。

私なりに探した結果、下記のレポートがくさいように感じました。

「不正なUTF-8シーケンスの場合に空文字列を返すのはおかしい」というレポートで、私のそれとは正反対どころか、Shift_JISにもEUC-JPにも触れられていない別個のものです。もちろん、私はレポート送信前に読み、別個と判断しました。

とはいえ、これぐらいしか似たようなレポートが見つかりません。他にあるようでしたら、ぜひお教えください。

#43896 についたコメントを見ると、どうも「PHPの利用者が自分で対処するのが正解」という流れになっているようです。もし、その基準にもとづいて私のレポートが却下されたのであれば、今後も htmlspecialchars の文字エンコーディング妥当性チェックが改善される見込みは薄いでしょう。残念ながら、自衛するしかないと思われます。

追記(2009-10-07)

PHPの開発陣には期待できないことが分かったので、Suhosinにfeature wishesとしてメールしてみました。

Suhosinについては下記の記事が参考になります。

もしリプライがなければ、私はもうお手上げです。私の書いたパッチは自由に使っていただいてかまいませんが、保守するつもりはありませんので、ご了承ください。ここから先は、PHPを愛している方たちにおまかせします。

追記その2(2009-10-08)

日本語のブログのURL書いて「危ないです」というのも、"I don't know whether it is useful though :)"なんて日本的謙遜も、伝わらなくても仕方ないかと

はてなブックマーク - AKIMOTOのブックマーク

ありがとうございます。このようなご意見を待っていました。

id:AKIMOTOさんに限らず、私のレポートの仕方が悪かったせいだと思われる方、ぜひ本件を引き継いでいただけないでしょうか。私の望みは htmlspecialchars の文字エンコーディング妥当性チェックが改善されることであって、どなたかが達成されるのであれば、それで万々歳です。採用されるレポートの書き方もそれで分かるでしょうし。

「いや、お前のレポートのせいで改善される見込みがなくなったんだ、余計なことをするな」といわれるのであれば、「それは残念です」とお答えするほかありません。

追記その3(2009-10-08)

ご指摘ありがとうございます。生かせるものは生かしたいと思います。

私は今回の件については、意図が伝わらなかったせいで却下されたのではなく、伝わったうえで却下されたのだと思っています。PHP開発陣の総意は「htmlspecialchars にはバリデーションの責務はない」というもので、その立場に立てば、記述が丹念であろうとなかろうと、過去に似たようなバグレポートがあろうとなかろうと、私のレポートを却下して当然です。

レポートを通じて気づかされたPHP開発陣の総意、つまりPHPの仕様は、私には「残念」なものでした。記事タイトルの「残念」には、そういう意味が込められています。テンプレートエンジンなんだから、validateしたっていいと思うんだけどねえ。PHPの残念さを見くびってました。

追記その4(2009-10-08)

なんども追記すみません。私なりに良案が浮かんだので、別のバグレポートを提出してみました。

ポイントは:

  • セキュリティの話にはアレルギーがありそうなので、純粋なバグレポートにした
  • 相手の言質(ChangeLog)を利用した
  • 冗長なUTF-8については諦めた(仕方ない)

の3点です。

これならすぐには却下されない(ひょっとしたら採用される)と思うんですが、どうなるでしょうか。

*1:OS欄に「All」と書いてあるレポートに対して、毎度「AllというOSはない」と返しているところから、そう感じました。もし「*」と入力するのが正解なのであれば、レポートフォームにそう注意書きしときゃいいのにね。

yohgakiyohgaki 2009/10/07 15:56 Janiさんはいつもあんな感じの人です。文字エンコーディングの問題について深く理解している方でも無いです。

文字エンコーディングのチェックは入力で完璧にするのが筋なので出力時のチェックはフェイルセーフとは思っています。ただ、PHP 5.3の位置づけからいうと少なくとも冗長なエンコーディングに対して脆弱であるのは問題だと思います。どうして理解されないのか、理解できないです(苦笑

IwamotoTakashiIwamotoTakashi 2009/10/07 20:53 コメントありがとうございます。問題を深く理解していない方に却下されたのであれば、ますます「残念」といわざるをえないですね。似たようなバグレポートを何度も処理するより、さっさと直したほうがリソースの節約になると私は思うんですが、PHPの開発陣はそう思わないんでしょうね。

AKIMOTOAKIMOTO 2009/10/08 18:07 > PHP開発陣の総意は「htmlspecialchars にはバリデーションの責務はない」

公式のアナウンスでしょうか?

> レポートを通じて気づかされたPHP開発陣の総意

もし言葉で確認されていないのであれば、「気づかされる」というのも日本的な感じがします。

そして、そういう背景・姿勢が問題なのであれば、なおさら「『htmlspecialchars にはバリデーションの責務はない』とするPHPの公式ポリシーが問題である。他のウェブ開発言語では、Perlはこう、Pytonはこう、… これによって引き起こされる問題とその想定される被害額はこう、…」といったような論陣を張らないと、今回のようなパッチが単発で受け入れられるような気はしないのですが。

hasegawayosukehasegawayosuke 2009/10/08 18:09 とりあえず、Suhosinの人には伝わったです。http://twitter.com/i0n1c/status/4705129319

IwamotoTakashiIwamotoTakashi 2009/10/08 19:12 AKIMOTOさん:

> 公式のアナウンスでしょうか?

いえ、下記の議論を読んでの推測です。
http://bugs.php.net/bug.php?id=43896
http://news.php.net/php.internals/34990

> そして、そういう背景・姿勢が問題なのであれば……

(私の推測する)PHP開発陣の総意、および、Suhosinができた経緯を見て、「いくら論陣を張ってもこの仕様が変わることはない」というのが私の見立てです。悲観的に過ぎるようですが、ほかのPHPユーザも、あまつさえコミッタだって、「言ってもムダだ」と思っているからこそ動かないわけですよね? そういう言語だと思って付き合う(または避ける)しかないんだと思っています。

hasegawayosukeさん:

お伝えいただいてありがとうございます。(メール読まれてなかったのか…)

今後の成り行きに期待してみます。

co3kco3k 2009/10/09 04:42 ごめんなさい! 追記その 4 に気づかず、
http://marc.info/?l=php-internals&m=125503005412795&w=2
で援護射撃という余計なことをしてしまいました。。。
規模は小さいですが同じ OSS 開発者として、今回のような成り行きになるのは非常に悲しいなと感じ、少しでも事態がうまく運ぶようにと思っての行動でした。ご迷惑になるようでしたら本当に申し訳ないです。

IwamotoTakashiIwamotoTakashi 2009/10/09 10:43 いえいえ、迷惑なんてとんでもないです。ありがとうございます。空白文字がちぐはぐだった件、最初のレポート分のパッチも修正しました。

Kenji_sKenji_s 2009/10/09 11:14 すでにご存しかもしれませんが、以下のような記事も出ています。

http://d.hatena.ne.jp/matarillo/20091008/p2

この問題については、せっかくもりあがってきましたので、みんなで協力して PHP をよい方向へ持っていければと思います。

IwamotoTakashiIwamotoTakashi 2009/10/09 11:32 はい、トラックバックをいただいたので読んでいました。

Rubyのまつもとさんがおっしゃる通り、PHPでのプログラミングは落とし穴がたくさんあるので難しいと思っています。
http://www.rubyist.net/~matz/20080129.html#p02

今回の件も(小さいながら)落とし穴のひとつで、誰かがふさぐよう提案しないと、ずっと放置されたままだったはずです。初心者向けといわれているPHPのような言語こそ、積極的に穴をふさいでいくべきだと思っています。

noricyannoricyan 2009/10/09 11:32 対応した新しい関数としてなら通るかも。

A-xtuA-xtu 2009/10/09 20:53 なんだか、最初のイシューが対応されてるっぽくないですか?

IwamotoTakashiIwamotoTakashi 2009/10/10 02:00 リプライが遅くなってすみません。A-xtuさんのおっしゃる通り、最初の分を対応していただけました。

A-xtuA-xtu 2009/10/10 14:23 おお、それはよかったですね。
であれば、対応していただけた方に感謝のメールを送られることを勧めます。ケースがクローズするとコメントをできないようなので。
あと、僭越ながら Jani さんにも感謝のメールを送ると良いと思われます。Jani さんの対応はたしかにつっけんどんながらも、文章そのものはとても丁寧かつ紳士的です。「:)」なんていう失礼なポストにそこまでの返事をいただけたことに感謝すべきです。
ニッポンの OSS コミュニティの誇りを捨てないでくださいね。

IwamotoTakashiIwamotoTakashi 2009/10/10 21:33 うーん。メールまで送る気にはなれないのが正直なところです。レポートを受け付けているわけですし、バグだと思えば修正するのが当然なんじゃないですかねえ。

「ニッポンの OSS コミュニティの誇り」については、すみませんが、よく分かりませんでした。仕事でしかたなくPHPを使っている身なので、「バグがあれば潰してほしい」以上の感情はないんですよね。(プライベートではPHPの使用を避けています)

時系列的には「徳丸さんやt_komuraさんの日記を読んだ → PHPのコードを読んで、意外と簡単に直せそうだと思った → パッチの私案を書いた → 本家に提案してほしいというコメントがあった → どうやって提案したらいいのか分からなかったので、とりあえずバグレポートを書いた → rejectされた → それがPHPの仕様っぽいから残念に思った → そのまま日記に書いた」というだけのことです。

ついでなので書いておきますが、「効果的なバグレポートの書き方」とか、「異文化コミュニケーションの難しさ」とか、「マルチバイト圏 vs. 非マルチバイト圏の戦い」とかいう話にはあまり興味がないです。私が興味があるのは、たぶん「PHPという言語そのもの(おもにその残念さ)」なんだろうと思います。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証