Joomla!で作成中のエクステンションで、外部エクステンション(作成した物ではない、既存のサードパーティーエクステンション)への対応を行っていて細部がわからないとき、そのソースを調査するのだが、良いというか便利なエクステンションと今まで思っていて実際に使ったことのあるものに配慮の無さを感じたとき、非常に残念に思う。
たまたま発見した(別に嫌みな事をしているわけではない)のだが、やっぱり以下のような事をしているエクステンションは、注意した方が良いと思う。
- 基本的に、Joomla!は、フロントエンド、バックエンド共、index.phpからはじまるのが基本です。データを呼び出すためにそれを行わないもの。
なぜ、それが重要かというとJoomla!の基本ライブラリをすべて読み込んで処理していれば、Joomla!のネイティブコードで書けて、且つJoomla!のバージョンアップで自然とセキュリティも高まるからです。
今回の場合、プラグイン単体なのにAjaxでデータベースのデータを読み込んでいました。ここで、「プラグインなのに」といってもわかりにくいですが、プラグインは、ある特定のタイミング(イベント)で仕事を行うのがプラグインです。Ajaxを使ってデータを読み込みたいのなら、systemのプラグインで、且つ特定のタイミングでやるなら(それなら、index.phpから読み込まれる)まだしも、それを行わず、自身が持っている専用のライブラリでそれを行うというものでした。そのライブラリで行っている事を見てみると、index.phpからロードするのと同様のことをやってはいるものの、セキュリティ的欠陥がありました。
それは、ログインせずとも誰でもそのURL(そのファイル)にアクセスすれば公開されている記事ではあるが、アクセス権限は関係無く、そのタイトルとリンクを、あたかも検索エンジンのように検索して返してくれるというものでした。まるで、Joomla!記事検索APIのようでした。
プラグインが使うAjax用ライブラリを書くくらいなら、よほどコンポーネントから作成した方が楽で、汎用的に使えると私は考えています。例えば、Joomla!1.6では、xmlrpcのオープンなアクセスポイントが今のところ無いように思われるため(Joomla!1.5では、/xmlrpc/index.phpだった。あるかもしれないが、まだわからない)、入り口は、index.php。そして、MovableType XML-RPCは、コンポーネントになる予定です。
オリジナルのライブラリに非依存に作成していくことは、楽であるし、セキュリティ的にも改善されていき、非常に重要な事であり、安全であると言えるのではないでしょうか。
自分のエクステンションを棚に上げてと思われる方もおられるでしょうが、もちろんミスはあるでしょうし起こりえますが、基本的な事は忘れないように心がけています。ミスはご指摘ください。セキュリティ的なものは、メールで送ってください。それは攻撃者から守るためです。今回も、メールでそのプラグインの管理者に問題点を送付しました。
Joomla!は、たくさんのサードパーティー製のエクステンションで支えられているCMSです。ですが、十分注意して利用していかなければならないですね。










先日、朝PCの電源を入れたら・・・起動しない・・・ 以前にもあったが、電源ボタンを押すと1、2秒でストンと落ちる。で、前のときはしばらく電源を切ってコンセントを抜いておいたら、直った(それって...