MT3.01D、Permalink の basename

MT3.01D で Permalink を新形式にすると .html という名前のファイルができてしまう件ですが、Ogawa::Memoranda さんにその原因と対策が載っていました。

Movable Type 3.0のIndividual Entry Archiveの命名方式の問題点
mt-resave-entries.cgi: basenameがNULLのエントリを再保存するCGI

まぁ、ほぼ予想通りといったところでしょうか。普通は Rebuild のときに basename が NULL かどうかをチェックしてちゃんと basename を設定しなおす処理を入れておけばいいだけのことなんですが。あと改行コードなど特殊文字の問題はサニタイジング(*1)の問題にも関係しそうだし….うーむ(^^;

*1) IPA の セキュアプログラミング講座「1-2. クロスサイトスクリプティング」が参考になります

Tags:

2 Responses to “MT3.01D、Permalink の basename”

  1. (o) より:

    「Rebuildのときにbasenameを設定し直す」、まあそれがよいのかもしれませんが、それは美しくないのですよ。

    Rebuildというのは、実はDBに何の変更もせず、Read Onlyなのです。言い換えると、「Rebuild=静的にViewを生成する操作」なのです。

    旧バージョンからのアップグレードスクリプトにmt-resave-entries.cgi相当の機能が含まれていればいいだけだと思います。

  2. GNUE(鵺) より:

    なるほど。2.x から 3.x へのアップグレードのときだけに問題になるわけだしアップグレードスクリプトにその機能があればとりあえずよさそうですね。

Leave a Reply