

●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/