「日本語で9文字以上のユーザー名でユーザー登録すると文字化けする。」と問い合わせがあったので少しHackしてみました。
これは、Joomla!1.0.xの場合です。
これには2つの原因があります。データベースの文字数制限と、ユーザー登録時の文字数制限です。
まず、phpMyAdminでデータベースを開きます。
- jos_usersのテーブルを開き、テーブルの構造を表示させます。
- フィールド欄のusename行の操作欄に鉛筆マークの様な画像(変更)が見えますのでそれをクリックします。
- 長さ/値の値を25から51(今回、ここでは倍の文字数にしました。51にすることで17文字のユーザー名が登録できます。)に変更して保存します。
次にRoot/includes/joomla.phpを開き以下の行を変更します。(2826行目付近)
// check that username is not greater than 25 characters
$username = $this->username;
if ( strlen($username) > 25 ) {
$this->username = substr( $username, 0, 25 );
}
の25の部分をデータベースと同様に51に変更します。
// check that username is not greater than 25 characters
$username = $this->username;
if ( strlen($username) > 51 ) {
$this->username = substr( $username, 0, 51 );
}
以上で日本語17文字のユーザー名まで登録できるようになりました。
今回は、51としましたがお好みで3の倍数になるように変更されても良いのではないでしょうか。
エクステンションのダウンロード数を比較してみるとJoomla!1.0.xと1.5では、1.0.xが約半分か、それ以下といったところでしょうか。Joomla!1.5はかなり使っている方が増えてきているようですが、まだ実運用では1.0.xが多いような気がします。問い合わせでも1.0.xであったりでみなさんなかなか1.5には移行できていないのでしょうか。そういう私も1.5では無いのです
が、作成してもらったら1.0.xだったのでという方も多いかもしれませんね。
では、実際今、サイトの作成を依頼されたらどちらを選択しますか?・・・そのサイトの内容次第でしょうね。まだ、付加する機能によって1.5か1.0.xを分けないと駄目な気がします。テンプレートひとつとって見ても豊富なテンプレートがあるjoomlaos.de
1.5に触れてみて(携帯用エクステンションを作成してみた。)拡張性が高いのには驚かされています。コンポーネントを作成するときは、いつもバックエンドから作成していますが、面倒なのは当然フロントエンドです。1.5だとやらないといけないことたくさんです。それは、1.0.xと違ってシステムに密接にリンクできるからではないかと思うのですが(言い方が違うかも)、コンポーネントのメニューひとつとってもxmlファイルなどで定義すれば、コンポーネント用の詳細な分岐できるメニューが作成できます。しかもそのメニュー毎に簡単にパラメータをxmlで設置できる。そのxmlでの定義も増えていてバックエンド用のパラメータとフロントエンド用のパラメータを分けて書くことができたりします。また、システムで実装しているものがたくさんあってそれを利用すれば今までエクステンション側で書いていたことが簡単に実装できそうです。と、良いことづくしな感がありますが、実際のところ大変です。
正直・・・私にとってはどちらかにしてくれって言いたいです。
1.5のエクステンションの普及待ちってとこでしょうか。
前回3月のログで解析を行ったら397件のSQLインジェクション攻撃が発見されましたが、
激減?141件でした。
なんと今回の解析後のログファイルを見てみるとすべてが、alphacontentへの攻撃でした。
しつこいなぁ。
攻撃して穴があったら報告してくれるならいいけどそうじゃないだろうし・・・。別の意味で報告か・・・。
自分の使っているエクステンションのセキュリティレポートには絶えずアンテナを・・・。
だけど今回のインジェクション攻撃って、GETのパラメータに不正なSQLクエリを挿入するものですが、Joomla!1.0.xの場合(1.5もそうだろう)そのパラメータを取得するときにフィルターをかけているのでサニタイズされて取得するようになっています。それを知っていたので放置していたこともあったのですが、破れるクエリってあるのかなと少し不安になるくらいの攻撃数でした。
昨日発見した点
- 記事を単独で表示するとmoovoteにデータが反映されていない。
後で直す。 - Support Forum(Fireboard)のリンク先のリダイレクト
今回Itemidを変更してしまったのでそれが反映されていない。
まず2点。Fireboardへのリンクは、先ほどリダイレクトのメソッドを追加したので解決した。
Joomla!は、Itemidでの管理が多用されていてItemid(メニューIDのことです。)が無い場合内部では99999999などと勝手にItemidをつけて処理しているようです。ですが、これだとItemid無しでアクセスまたは、異なるItemidでのアクセスの場合、Itemidで表示を管理するモジュールなどが正しく表示されません。Allにしていれば問題ないでしょうが、Itemid(メニューID)ごとに異なるモジュールを割り当てている場合は、Allのもののみ表示されるだけで意図した表示にはならないです。
小さなことかもしれませんが、サイトを移転したりメニューIDを変更したときには重要かもしれません。
今回の場合、Itemidが異なるため表示はされるのですが、ComibineコンポーネントでFireboard用に出力されるはずのJavascriptが出力されていませんでした。
指定した(存在するメニューID)Itemidでのみアクセスを許可し、それ以外ならリダイレクトさせるような処理をしてくれるエクステンションが、必要かもしれませんね。それがあれば、サイト移転しても楽じゃないかな。
最初に・・・
トップページでリンクさせていただいていたサイトをトップメニューからのリンクページに変更させていただきましたのでこの場を借りてお断りいたします。
新しいエクステンションを使っていますが、ほとんどテストのためですので不具合ありましたら、コメント・・・無い・・・(そうなんです。コメント機能は間に合わなかったので無しです。)Forumにでも書き込んでいただければと思います。
テストしているエクステンション
- JBTabmenu Module
mootoolsを利用した階層メニューです。(実はまだパラメータ部分が、未完成です。) - JBSystem
今回の中枢をなすコアエクステンションです。 - JBContent Component
mootoolsとmultiboxを利用したmoovote, mooSocialBookmark(IFrameはちと・・・), moofriendmail, JBPageNavigation, CalenderDateなどなど 。 - JBModules
Contents関連いろいろ。 - Combine System
前宣伝していたやつ。 - JTabReplacer
同じく。 - JB multibox
前からdemo10.joomler.netでデモしてたものをもう少しだけ拡張した。
残念ながら使わなくなったエクステンション
- AlphaComponent
- !joomlacomment
- greybox show
公開できるものだけ順次公開していこうと思っています。もちろん1.5用もです。




























