●XOOPS 2.0.10/11/12/13
用のオートログインハック(+
α)
済みコアファイルパック (V3)
これは本家版用です。2.0.*JP 用ではないので、注意してください!--------------------------------------------------
XOOPS 2.0.10/11/12/13 に
自動ログイン
機能を
付与するためのパッチです。
このアーカイブ
内に
含まれる
全ファイルを、お
使いのXOOPS 2.0.10/11/12/13 に
上書きすることで、
自動ログイン
機能が
有効になります。(
実際には
上書き
後に、システムモジュールをアップデートするか、ログインブロックのテンプレートを
編集する
必要があります)
V3 では、クッキーへの
保存形式を
若干変えることで、
安全性が
多少マシになりました。
期限付きでmd5エンコードされたパスワードしかクッキーに
保存しませんので、
誰かがクッキーを
盗んだとしても、その
期限以降であればログインに
成功しません。
つまり、オートログイン
有効期限が
重要なわけで、デフォルトの1
週間を1
ヶ月や1
年に
延長すると、それだけ
危険性が
増すことに
留意ください。
オートログインV2で、リトライ
機能がつきました。
従来のオートログインHackでは、CSRF
対策のために、いきなりコンテンツにアクセスするとトップに
飛ばされることが
多くありましたが、
今はいったんsession_confirm.phpにリダイレクトしてから、
元の
場所に
戻ります。
このsession_confirm.phpがV2で
増えたファイルです。
忘れずにアップロードしてください。
また、
何か
投稿した
時にセッションが
時間切れで、
投稿内容をロストした、という
経験をお
持ちの
方も
少なくないと
思いますが、このオートログインV2を
有効にしているユーザであれば、
再度自動ログインして、
直後に
再投稿の
機会が
与えられます。(V2の
目玉機能)
このHackは、unameとmd5ハッシュ
済のパスワードをクッキーに
保存するのですが、その
有効時間は、デフォルトで1
週間(604800)となっています。
もし、この
値を
変更したい
場合は、mainfile.php に
対して
下のように1
行追加して
下さい。
define('XOOPS_AUTOLOGIN_LIFETIME',2678400);
この
行は
少なくとも、include XOOPS_ROOT_PATH."/include/common.php"; と
書かれた
行より
上にある
必要があります。
また、
言語ファイル (langage/japanese/global.php) に
手を
入れている
方は、このファイルを
上書きするのではなく、ご
自身で
書き
換えてください。
define('_USERNAME','ユーザID または e-mail: '); // 書き換え
define('_REMEMBERME','IDとパスワードを記憶'); // 追加
define('_RETRYPOST','時間切れでした。再投稿しますか?'); // 追加
これは
重要な
注意点ですが、クッキーにログイン
情報が
残っているということは、
当然、
誰かに
盗まれる
可能性があります。
共用コンピュータなどをご
利用の
際には、
必ずログアウトしてから
終了するようにアナウンスする
必要があるでしょう。
実は、2.0.4
以降、onokazuさんが
私の
自動ログインHackをコメントアウトした
状態で
取り
込んでくれているのですが、このコードはあまり
推奨できません。その
理由は、クッキーの
衝突とCSRF
攻撃への
耐性です。
2.0.6
以降のオートログインHackでは、CSRF
対策のために、クエリのついたURLにいきなり
自動ログインしてきた
時には、ホームページに
強制リダイレクトします。ちょっと
驚くかも
知れませんが、そういうものだと
理解してください。
また、
従前の
自動ログインHackでは、
自動ログインの
有効期限として、session_expireの
値を
流用していましたが、こうしてしまうと、カスタムセッション
機能が
事実上使えなくなってしまうため、XOOPS_AUTOLOGIN_LIFETIME という
定数で
指定する
方式に
改めました。
それと、このアーカイブを
上書きすると、emailアドレスでもログインできるHackも
自動的に
有効になります。
これだけ
書くと、RyujiさんのemailLoginHackと
同じじゃないか、と
思われそうですが、あそこまできちんと
作っていません。ユーザー
名として
送られてきた
文字列に、@ が
含まれていれば、email によるログインだと
推定してログインを
試す、というだけのHackです。
逆に
言えば、その
分、Hack
箇所も
少なくて
済んでいます。
基本的には、include/checklogin.php だけの
変更ですので、コアバージョンへの
追随も
少しは
楽になるかもしれません。
最近のショッピングサイトでは、
会員番号でもメールアドレスでも
受け
付ける、というものが
増えてきているので、それなりに
受入れやすいHackではないでしょうか。
また、include/common.php などは、
他のHackとバッティングしやすいので、
上書きされると
困るケースもあるでしょう。その
場合は、このアーカイブの
各ファイルについて、'GIJ'という
文字列で
検索すれば、Hack
箇所がどこか、すぐに
判るはずです。
by GIJOE
http://www.peak.ne.jp/xoops/