川o’ヮ’)<jknd life このページをアンテナに追加 RSSフィード

2006-05-29

Re: 「Ajax + PHP」でRSSリーダーを作る : きまぐれ日記2『オンとオフの狭間』

GIGAZINEの記事経由で知った記事。RSSリーダ作成には興味があったため読んでみました。その内容については・・・よろしくないことが普通にかかれています。

件の記事で作ろうとしているものはRSSリーダーですが、Ajax―つまりWebブラウザ側―でRSSをどうにかする式のものです。

このたった一言で読者の50%には何となくイヤな予感がよぎっているのではないかと思ったりもします。

さて、先に書いたとおり記事にあるRSSリーダーAjaxサーバからRSSをとってくる仕組みです。しかしながら一般的にAjaxと呼ばれる技術で使うXMLHttpRequestなどは異なるドメインにアクセスすることをセキュリティ上の観点から許可していません。そうなるとWebブラウザベースのRSSリーダーとしては大変困るわけです。RSSを読みたいのに他のドメインのものを取得できないのでは。それではこういった場合どうするか?答えは簡単ですね。プロキシ的動作を行える何かがあればいいのです。

ここからやっとヤバイところ、要するに本題です。外部のサーバからRSSをとってくるための方法が記事の一番下のほうに書いてあります。

このような“力技”は「別のサーバのファイルの中身を表示したい!」と同じですね。もう少し早く気がつけば良かった。

rss-sample0.php」は次のようになります。(たったこれだけです)

<?php
$filename = $_GET['u'];
$array = file($filename);
$filenaiyou = join("",$array);
echo $filenaiyou;
?>

これを見て3秒でマズい事に気づけないようでしたら、PHPを使うのをやめた方がいいと私は思います。

何がダメなのかわからないアナタは u パラメータに /etc/passwd とか ./rss-sample0.php とか指定してみればよいでしょう。

ということでPHPが脆弱なものという認識が薄れてくれることを特別願ったりはしませんが、わざわざ増やすこともないので指摘してみた次第です。どこかで動いているだけであればまだしも、一つのエントリとなっている以上誰かが参考にして似たようなスクリプトが量産するようなことがあれば世界は破滅へと向かいます。

上に追記していく形に

します。

Plagger::Plugin::Filter::Imakita3Gyo

何でもかんでも3行にまとめて、読む時間を節約するというアイデア。