[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:15122] /usr/share/doc/ の日本語 html 文書と apache (>=1.3.12)



 debian-users に投げた FAQ に関連して wishlist です。
/usr/share/doc/ 以下に日本語の html 文書を install するパッケージ
全般が対象です。

[障害] /usr/doc/path_to_doc/ 以下に apache 経由で
http://localhost/doc/path_to_doc/ のようにしてアクセスすると,
標準の状態では日本語の文書が文字化けします。

[原因] CERT Advisory CA-2000-02
http://www.cert.org/advisories/CA-2000-02.html のために,
apache (>= 1.3.12) のデフォルトでは httpd.conf において
AddDefaultCharset on と設定されています。このため apache は
META タグを無視して MIME Content-Type ヘッダに誤った文字コード
charset=iso-8859-1 を送出してしまいます。


[対処:user] httpd.conf に:

    <Location /doc/path_to_doc/>
      AddDefaultCharset {ISO-2022-JP | EUC-JP | Shift_JIS}
    </Location>

といった記述を追加することでユーザサイドで対処できます。


[対処:devel] しかし,本来はパッケージ側で面倒を見るべき部分では
ないでしょうか。この問題への誤った対応として AddDefaultCharset
off としてしまった場合にセキュリティ上の問題が生じるという点
からも,好ましい状況ではないと考えます。


 以下,パッケージ側から取れる対策を幾つか考えてみました。
なにぶんメンテナ経験がございませんのでとんちんかんでしたら
ごめんなさい。

1. rules で httpd.conf を安全に書換えるのは困難ですよねきっと。
   そこで httpd.conf を改変しない方針:

     # find path_to_doc -name '*.html' \
       -exec mv \{\} \{\}.ja.jis \;

   ただし,ISO-2022-JP 以外のコードの文書は依然として文字化けします。

  →全部 JIS に変換してかまわないならば,nkf -j して .ja.jis な
    suffix を付ける,という線がよいと思います。


2. JIS 以外のコードの場合,デフォルトの httpd.conf に全く手を
   加えずにすむ方法というのはなさそうでした。ただし,httpd.conf
   に AddCharset しておいて該当ファイルの拡張子をいじることで
   対応可能です。

   →apache を修正して httpd.conf に

       AddCharset EUC-JP .euc
       AddCharset Shift_JIS .sjis

     の 2 行を加え,かつ .ja.* な suffix を付けるという道も
     あります。


3. .htaccess が使えればよいのですが,デフォルトでは /doc には
   AllowOverride が設定されていません。

   →apache を修正して <Location /doc> に AllowOverride
     FileInfo を追加し, かつ各パッケージは適切な .htaccess を
     置く。こうすればファイル名を変えずに済みます。

   # なぜだか,これは私の環境ではうまく機能しませんでしたが...。


4. 以上いずれも無理だとしても,せめて README などに httpd.conf の
   設定方法などの Tips があればと思います。


 以上,ご検討くださいませ。

 #  ミもフタもないことを言えば,別に localhost 経由で見れなくたって
 # 困らないわけで,そういう意味でとんちんかんかもしれませんが...
 # 何を隠そう,私,ハマったあげくに AddDefaultCharset を off に
 # して放置してしまってたので——私だけ??


--
井上 博之 / INOUE Hiroyuki
E-Mail: dombly@xxxxxxxxxxxxxxxx
PGP Fingerprint: CAF3 05AB B2C6 0869 2876  1F68 3C49 F871 BC66 3D8D
...................................................................
:sniper propaganda Etacs class struggle afsatcom enforcers
:munitions Defcon KGB Elvis corporate security codes SDI Indigo
:Mole
:(Cf. http://www.gnu.org/manual/emacs/html_chapter/emacs_29.html#SEC372)