W3CのDTDを取りに行きすぎるとBANされる
2009年10月21日(水曜日)
W3CのDTDを取りに行きすぎるとBANされる
公開: 2009年10月22日21時40分頃
こんなお話が……「W3C Systeam's blog - W3C's Excessive DTD Traffic (www.w3.org)」。
Yet we receive a surprisingly large number of requests for such resources: up to 130 million requests per day, with periods of sustained bandwidth usage of 350Mbps, for resources that haven't changed in years.
W3CのサイトにおかれているDTDなどに対して、1日に1億3千万回ほどのアクセスがあるそうで。
たとえば、.NET FrameworkのXmlDocumentでXHTMLを読むなんてシチュエーションはありがちだと思いますが、XmlResolver = nullを指定せずにそのまま使うと、いちいちDTDにアクセスしに行ってしまいます。世界中でそういうことをされると、まあ、大変ですよね。
で、特定IPアドレスからのアクセスがあんまりにも多いとどうなるかというと……BANされて、DTDのかわりにこの記事へのリンクが表示されるようになるという。そうするとパーサが動かなくなるので、嫌でも気付くわけですね。
というわけでXmlResolver = nullを推奨、と言いたいのですが、XHTMLの場合はなかなか難しいものがあります。DTDをスルーしてWell-formedなXMLとして処理しようとすると、©などの実体参照が展開できずに残念なことになってしまうのです。XHTMLなどの代表的なDTDは取りに行かずに自前で処理してくれるXmlResolverが用意されていれば良いのに……と思ったら、こんなのがありました。
- XmlPreloadedResolver クラス (System.Xml.Resolvers) (msdn.microsoft.com)
これは素晴らしい! 今すぐ使うべし! ……と思いきや、これ、今のところSilverlight専用なのですね。次期の.NET Framework 4には入るらしいので、首を長くして待ちましょう。
- 「W3CのDTDを取りに行きすぎるとBANされる」へのコメント (3件)
- 前(古い): 届出状況2009Q3/脆弱性の再指摘
- 次(新しい): ゆゆ式