2008年3月12日

[Namazu-users-ja 1051] [技術資料] Namazu 2.0.18 に新設された Charset ディレクティブ関連の話

寺西です。

Namazu 2.0.17 以前の namazu.cgi はデフォルトではレスポンスヘッダの
ContentType に charset を出力しません。
この時、Web ブラウザの charset 自動認識の誤認により脆弱性の問題が
起こることがあります。
http://www.namazu.org/security.html

しかし、Namazu 2.0.6 以降には namazu.cgi で出力するレスポンスヘッダの
ContentType を .namazurc で直接指定する機能を有しています。

ContentType "text/html; charset=EUC_JP"

など明示的に指定することでレスポンスヘッダの ContentType に charset を
出力することができ、この脆弱性の問題を回避することができます。
ただし、この場合は charset の値が固定されるため、CGI変数 lagn を用いた
言語切替ができないという制限がかかります。
(.namazurc の Lang ディレクティブを用いて言語を指定した場合も言語切替
はできませんので、実質困る方は少ないとは思います。)


これに対して Namazu 2.0.18 の namazu.cgi では、デフォルトでレスポンス
ヘッダの ContentType に charset を出力します。
ContentType "text/html; charset=%charset%" として内部処理を行います。
(%charset% は言語に対応したキャラセット)

このため、ContentType を .namazurc で指定していなくても言語に合った
charset が出力可能です。(サポートしている言語の場合)

Namazu 2.0.18 がサポートしている言語については新設した Charset
ディレクティブで指定することが可能です。(言語切替に対応)

もちろん 2.0.17 以前のように ContentType で直接 charset を指定しても
かまいません。(この場合には、言語切替は不可能)

Namazu 2.0.18 では、.namazurc で charset が未設定の ContentType を
直接指定した場合でも、"; charset=%charset%" を自動的に追加して、
charset を出力します。(言語切替に対応)


現在のところ、標準のメッセージカタログには EUC-JP, Shift_JIS,
ISO-8859-1, ISO-8859-2 の charset が使われているだけですが、
それ以外の charset の利用も考えると全てを自動で切り替えることは
困難です。
このため、現在サポートしていない言語に対応するために Charset
ディレクティブを新設しました。

現在サポートしている言語とその charset の対応は次の通りです。

Charset "ja" "EUC-JP"
Charset "ja_JP.SJIS" "Shift_JIS"
Charset "ja_JP.ISO-2022-JP" "ISO-2022-JP"
Charset "fr" "ISO-8859-1"
Charset "de" "ISO-8859-1"
Charset "es" "ISO-8859-1"
Charset "pl" "ISO-8859-2"

(ここには ja_JP.eucJP はありませんが、ja_JP.eucJP はテンプレート
ファイルの選択のルールと同じように完全一致する言語がなければ
ja_JP、ja と順にチェックします。ja_JP は未設定ですが、ja は設定されて
いるため、charset としては EUC-JP が選ばれます。)

上記以外の言語を利用する場合には Charset ディレクティブで charset を
設定してください。

例えば eo(エスペラント語)を ISO-8859-3 に対応付けるのには

Charset "eo" "ISO-8859-3"

のようにします。(デフォルトは ISO-8859-1)
これにより言語 eo を選択した場合には、namazu.cgi のレスポンスヘッダの
ContentType は "text/html; charset=ISO-8859-3" が出力されることに
なります。

なお、Charset ディレクティブはシステムでサポートする言語とその言語に
対応する charset を設定しなければなりません。
システムと異なる charset を設定すると不具合が生じます。

Charset ディレクティブで、言語の charset が自由に設定できるわけでは
なくて、システムの言語に対応する charset を namazu.cgi に教える機能
だと理解してください。

--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns@xxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E


--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns@xxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E

_______________________________________________
Namazu-users-ja mailing list
Namazu-users-ja@xxxxx
http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-users-ja

投稿者 xml-rpc : 2008年3月12日 21:45
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/70915
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。