http://japan.nucleuscms.org/bb/viewtopic.php?t=2018
今回の修正内容はいくつかの不具合改修、そして register_globals on となってる環境でのセキュリティ脆弱性の対応です。当サイトは思いっきりセキュリティリスクあったので、早速適用してみました。
フルパッケージ、アップロードパッケージ、差分のみのパッケージ、と3つ用意されてましたが、今回は差分のみのパッケージを適用させていただきました。コア修正してる人には気になる差分ファイルの中身ですが、libフォルダの下記ファイルです。
globalfunctions.php
PLUGINADMIN.php
当サイトだと globalfunctions.php の修正がそれなりにあるので、今回のバージョンアップの時だけ修正しなおした箇所をメモしておきます。
upgrades フォルダを削除しても、config.php のパーミッションを変更できなくて*1管理画面に入れないから、下記を修正。
nucleus/libs/globalfunctions.php
$CONF['alertOnSecurityRisk'] = 1; ↓ $CONF['alertOnSecurityRisk'] = 0;
文字化け対策。
nucleus/libs/globalfunctions.phpの
function shorten($text, $maxlength, $toadd) {}にて
$trans = get_html_translation_table(HTML_ENTITIES); ↓ $trans = get_html_translation_table(HTML_SPECIALCHARS);
あとコア修正ではないんですが、アーカイブリスト表示の時にページ切り替えがうまくいかなくなったので、この記事の最初の例の修正を実行。
NP_TitleList.php の 578行目あたり
$uri = sprintf("%s%s%s","http://",serverVar("HTTP_HOST"),serverVar("REQUEST_URI")); ↓ $uri = sprintf("%s%s%s?%s","http://",serverVar("HTTP_HOST"),serverVar("SCRIPT_NAME"),serverVar("QUERY_STRING"));
他にもあるかもしれないので、発見したら書き足していきます。
- 注1 : IISサーバーの宿命です。同様に .htaccess という宿命もあります。世の中宿命だらけですね。
コメント
$CONF[‘alertOnSecurityRisk’] = 1;
ですが、多分 upgrades ディレクトリを置いたままなんではないでしょうか?このディレクトリは db のアップグレード時に使うんですが、終わったら削除した方がいいです。他の理由、例えば config.php が 444 になってないとか、もあるので、なるべくこのフラグは 1 のままで、その原因を解決した方が(しかも割と簡単)いいかと思いますよ。
ご指摘ありがとうございます。
upgarades ディレクトリは削除した状態ですが、
ディレクトリが残っている時と違う警告が出てますね。
ウチがIISサーバーだから、パーミッション変えられないのが
原因だと思います。
他に方法があればいいんですが……
自分だけあとで見直した時に分かるようにメモ書きしてたので、他の方から見ると分かりにくいですね。記事を少し修正しておきました。
Win であれば、エクスプローラーで config.php を選択して、プロパティ開いて、Read only を追加すればよかったような気がします。手元の PC では cygnus が入ってるので、何気に chmod しちゃってますが、他の IIS なマシンではプロパティからやった記憶があります。 ってか config.php のパーミッションを変えろ、という警告だったら、という前提で書いてます。
ちなみに .htaccess とかドット付きファイルはコマンドプロンプトからなら作成できますよ。
最初に普通に htaccess ってファイル作って、コマンドラインで
ren htaccess .htaccess
ってな感じで。ってもしかして、こいう話ではない?
ところで、情報を記憶する、をチェックしてるんですが記憶してくれないのは自分の日ごろの行いの悪いせい? ^^;
あぁ IIS は .htaccess つかわんですね…すみませんコメント欄荒らしまくって ^^;
いろいろと誤解を生むような書き方だったようですみません。
このサイトって意外とNucleusを触り始めて間もない方も見られているようなので(つまり、こんなんでも参考にされてる方もおられるようなので)、自分以外の人が見ても何がダメで何を直したのか、って分かるようにした方がいいかな、という意味で記事は修正しました。
自分のWinマシンを自宅サーバにしてるとかじゃなくて、レンタルサーバがIISになってまして、エクスプローラーみたいに右クリックで読み込みオンリーに設定はできない状態ですね。その上で、そういう風に444指定が出来るツールで cygnus ってのが存在してる、と考えればいいのでしょうか。サーバにアップしてコマンドラインで色々できるのかな、とか想像してます。
「情報を記憶する」に関しては気付いてませんでした。ご指摘ありがとうございます。フォーラムを探してみましたが見つからなかったので、ちょっとGoogleなどで方法を探してみます。どうしても無理そうだったらチェックボックス自体を外す方向で対処しようかと思います。
あと、そちらのコメント欄内で行頭にシャープ文字がありましたので、そこだけ修正させていただきました(バックアップ時の障害になりますので)。ご了承ください。
情報を記憶しておく、が動くようになったそうなので、テスト。
そいえば行頭に # ついてると、バックアップ失敗しますね。自分も Nucleus 導入直後にいきなりその不具合にあったので、即デバッグしてバックアップルーチン書き換えましたが…リリース版には反映させてないです(テスト不十分だし)。
結局のところ cygnus はサーバにアップするようなソフトではなく、外部のIISサーバに関してはパーミッションは変更できない、と捉えておけば正解、ということで良かったでしょうか(間違っていたらレスで指摘があるだろう、という考えからそう判断しています)。
「情報を記憶しておく」ですが、一度 NP_NoRobotComment をアンインストールしてインストールしなおしたら正常に動くようになった印象があります。プラグインリストの並びが変わったのが影響してる可能性もありますが。
行頭の # に関しては、佐藤(な)さんのバックアッププラグインの検知機能で発見しました。と言うよりも他サーバへNucleusデータを以降しようとしたときに失敗したので、バックアッププラグインで調べた、という流れでした。
今はバックアッププラグインを常用してますので、コメントやアイテム投稿のたびに検知されるので大丈夫です。