Home arrow Blog

Blog

まだ、新規で構築するサイトでJoomla!1.0.xが選択されている事があるようです。それは、使えるエクステンションがJoomla!1.5と比較してダントツに多いからなのはわかっています。このサイトも1.0.xなのは自分のエクステンションがまだ、用意できていないからですし。

以下の理由でJoomla!1.5を推奨します。

理由:WEB制作会社向き

  1. コードの再利用が楽になる
    エクステンションを一度開発側に作らせておけば、以後の開発費が安く済みます。
    (うちに頼んでね・・・。)
  2. 今後または、現在出ている新しいエクステンションは、ほとんどJoomla!1.5用である
    Joomla!1.0.xを利用している限り古いコードで作成された古いエクステンションを使わざるを得ない。また、新しいサービスに対応したエクステンションが出ないかもしれない。
  3. Joomla!1.0.xより攻撃されにくい
    Joomla!1.0.xで構築しているとサードパーティーのSEFエクステンションでも導入していない限りJoomla!で構築していることが誰にでもわかってしまうので今まで公になっている穴をついた攻撃にさらされやすい。(現にこのサイトがそうである。)
  4. カスタマイズしやすい
    1.にもつながる理由ですが、エクステンション側だけでなく、テンプレート側でもかなりカスタマイズが容易なため生産性が高い。
 

先日DS-Syndicateコンポーネントに脆弱性があることがわかって対策を書きました。それで大丈夫ですが、0の時に余計なファイルを作成されてしまうのでさらに以下のように追記しました。

このサイトの場合のように一つしかフィードアイテムを用意していない場合

$feed_id = 1;

数字の1の部分は公開しているフィードのIDに置き換えて下さい。

複数のフィードがある場合

if( !in_array( $feed_id, array(1,2,3,4,5)) ){
	$feed_id = 1; 
}

などとarray()の括弧の中にコンマ区切りで公開しているフィードのIDを書けば良い。その中のID以外をリクエストしてきた場合は、IDが1のフィードに強制的にしてしまうわけです。そうすれば余計なファイルは生成されないで済みます。余計なファイルと言っても・・・いやこれって絶対書かないと駄目ですね。仮に10000まで順にアクセスしてきたら10000個のファイルが生成されるってことですね。ぉぃぉぃ困ったもんだ。

 

以前に紹介して実際にこのサイトでも使っているDS-Syndicateでセキュリティホールが公表されていました。私は、改造して使っていたりなのですが、そこまで見ていませんでした。

対応策

new_feed(mosGetParam( $_GET, 'feed_id', ""));

new_feed(intval( mosGetParam( $_GET, 'feed_id', "") ));

のように(他の方法でももちろん良い)数値にサニタイズすることで対処できます。

追記:さらにすでに攻撃されたかどうかは、Root/components/com_ds-syndicate/feedフォルダ内を見て下さい。そこに通常のファイルではなさそうなものがあればすでに攻撃されたものだと思われます。フォルダ内のファイルをすべて削除する必要があります。

念のためまだ10月の途中ですが、毎月行っているiLogScannerのスキャンを行ってみました。

joomler_net-2008-10_iLogScanner

22日現在の時点で104件の攻撃で幸い成功はしていないようです。
成功していないというのは厳密に言うと間違いです。この攻撃を使ってのインジェクション攻撃は成功しています。そしてデータベースのnameとpasswordは見る事ができたかもしれません。ですが、Joomla!は生のパスワードは保存していません。パスワードは、Joomla!の独自メソッドでハッシュ値に変更されたものなので生のパスワードを悟られる事はまずありえ無いでしょう。心配な方は、パスワードを変更してください。

ログを見てみるとDS-Syndicateに対する攻撃は、10月6日から来ています。公表されるずいぶん前の時点ですね。情報を素早く入手することももちろん大切ですが、エクステンションを導入するときには気軽に導入すべきではないことも事実のようです。また、たくさんの人が使っているから大丈夫ということも絶対言えませんし、あのサイトで紹介されているから大丈夫とも言えません。

 

ふと・・・Combineだとか、TagReplacerなどと作ると言っておきながら作ってない物がありますね。

昨日、別のエクステンションで少しテストしていたのですが、Joomla!1.0.xでは容赦なくGLOBALな値にして参照していたものをGLOBALな値にせずにJoomla!1.5で活用して且つ、HeaderTagに最終的に出力しようと思うと、その最後のタイミングのイベントがどうも無さそうなんです。というか考え方が間違っているのかもしれませんが、Joomla!1.5ではモジュールからHeaderTag内にも出力できるのでそれすらもカバーしようと思うとどのモジュールが(というより、最後にHeaderTagに入れたいやつは誰だ?)最後かわからないのです。これでは判断しようが無い。

Joomla!1.0.xのようにモジュールからのHeaderTagへの出力をカバーしなければ良いのですけどね。

 

以前からコメントエクステンションを作成するために必須のBBCodeエディタを探していました。

配布できるフリーのもので体裁が良く、リンクの無いもの。こうやって書きながらなんて都合の良い条件なんだろうと今更思いますが、なかなか良い物(都合の良い物と言った方が当たっていそうだ。)が無い。で、結局自分で作る事にしました。

いろいろサイトをまわって何が必要か、外観はどうかと見ながら作成したものが上の画像です。FAMFAMFAMのアイコン画像を使ってやっぱりCaptchaは必要だし、などと考えながら作成していました。送信ボタンだけ日本語なのは、画像だからです。少し考えなきゃいけなかったのは[List]ですね。[ul]なり[ol]のボタンを置けばそれで解決することですが、シンプルに行きたかったし中にはそれだけのエディタもあるのでいろいろ考えて実現したつもりです。

まだ、Joomla!1.5化には遠いですがいずれここで使うことになると思います。

後で気がついたのですが、汎用性があるのでCaptchaの部分を独立させようと思います。たとえば、問い合わせ画面にも使えるように。

 

Results 11 - 15 of 273

joomler_kun_48.gif Blog
Joomler! Blog

for Mobile