Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: namazu-2.0.10rc1
Tietew です。
On Thu, 20 Dec 2001 19:26:30 +0900
In article <20011220185223.CC70.TAKAGI.HIROMITSU@xxxxxxxxxx>
[[namazu-devel-ja] Re: namazu-2.0.10rc1]
"TAKAGI, Hiromitsu" <takagi.hiromitsu@xxxxxxxxxx> wrote:
引用順多少変えます。
> > # てゆうか2.0.8の時点で <>" だけ対策して & が忘れられている
> > # のは何故〜(^^;
>
> この記事をウェブのアーカイブで拝見しまして、参加させていただきました。
>
> URL中の&をエスケープするのが仕様的に正しいというのは、おそらく、たとえ
> ば、
> http://........../cgi-bin/foo?bar=1<=2
> という場合に、「<」が「<」に展開されてしまうからなのかもしれません
> (でも、「;」がなくても展開するのは仕様的にはどうなの?)が、
SGML 的には ; が無くても展開して良いことになっています。
# 本当は,SGML 宣言で決定するのだが,HTML ではそれをして良いと
# 宣言してある…らしいです(^^;
> namazu.cgiで「lt」というパラメタを使っていなければ問題がなく、セキュリ
> ティ的には、「"」が「"」にエスケープされていれば問題ないはずだ、
:
> が、(URL中でも)「&」を「&」にするのが仕様的に正しいのですね。
えーと,「URL中の」「URL中でも」の表現がまだ誤解しているようなの
ですが…
HTML 中では「どんな場合でも」"&" 文字を表現したかったら & と
書かなければなりません。たとえ,それがタグの属性中であってもです。
# 唯一の例外: 要素の((*内容モデル*))が CDATA の場合。
# script, style などの要素が該当する。
# 属性値は CDATA と宣言されていても #PCDATA で書く。
勿論,URL を表記する際に & を & と書いたらダメです。それを
HTML (XML) に書くときに & と書かなければならないのです。両者
を混同してはならないのです。
e.g.
<http://foo/bar?baz=1&zot=2>
というURLを参照する場合に,「HTMLでは」
<a href="http://foo/bar?baz=1&zot=2">〜</a>
というタグ付けをする。
Namazu は HTML4.01 Strict 準拠を謳っていることをとっても「文法違
反」なわけですから,問題だと思います。
> とお考えかもしれませんが、ところが、閲覧者が Netscape 4 を使用している
> 場合に、クロスサイトスクリプティングの問題をひきおこします。
>
> 具体的には、例えば以下のURLにアクセスさせられた場合です。
> http://www.namazu.org/cgi-bin/namazu.cgi?query=a&{alert(document.domain)};&whence=0&max=10&idxname=www.namazu.org.ja
>
> Netscape 4の独自仕様で、タグの属性値中に &{...}; があると「...」部が
> JavaScriptとして実行されてしまいます。(糞機能と非難されNetscape 6では
> 廃止されたらしい。)
>
> URLエンコードを適切に施す(「{」を「%7B」に)ことでもこの問題は回避さ
> れると思います。
これは付加的な問題でしかないですね。URLエンコードで回避しようと
することこそ,小手先だと非難されても仕方がないように思います。
―[ Tietew ]――――――――――――――――――――――――――――
Mail: tietew@xxxxxxxxxx / tietew@xxxxxxxx
Web : http://www.tietew.net/ (Tietew Windows Lab.)
PGP fingerprint: 26CB 71BB B595 09C4 0153 81C4 773C 963A D51B 8CAA