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&lt=2
> という場合に、「&lt」が「<」に展開されてしまうからなのかもしれません
> (でも、「;」がなくても展開するのは仕様的にはどうなの?)が、

SGML 的には ; が無くても展開して良いことになっています。
# 本当は,SGML 宣言で決定するのだが,HTML ではそれをして良いと
# 宣言してある…らしいです(^^;

> namazu.cgiで「lt」というパラメタを使っていなければ問題がなく、セキュリ
> ティ的には、「"」が「&quot;」にエスケープされていれば問題ないはずだ、
 :
> が、(URL中でも)「&」を「&amp;」にするのが仕様的に正しいのですね。

えーと,「URL中の」「URL中でも」の表現がまだ誤解しているようなの
ですが…

HTML 中では「どんな場合でも」"&" 文字を表現したかったら &amp; と
書かなければなりません。たとえ,それがタグの属性中であってもです。
# 唯一の例外: 要素の((*内容モデル*))が CDATA の場合。
#             script, style などの要素が該当する。
#             属性値は CDATA と宣言されていても #PCDATA で書く。

勿論,URL を表記する際に & を &amp; と書いたらダメです。それを 
HTML (XML) に書くときに &amp; と書かなければならないのです。両者
を混同してはならないのです。

e.g.
  <http://foo/bar?baz=1&zot=2>
  というURLを参照する場合に,「HTMLでは」
  <a href="http://foo/bar?baz=1&amp;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