[技術資料] Namazu 2.0.18 に新設された Charset ディレクティブ関連の話 ― 2008年03月13日 05時34分11秒
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 に教える機能 だと理解してください。
コメント
トラックバック
このエントリのトラックバックURL: http://namazu.asablo.jp/blog/2008/03/13/2736056/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。