10月 2004のアーカイブ
デイレクトリ( cache, templates_c ) のセキュリティ対策
ダイナミック・ページ用デイレクトリ( cache, templates_c ) のセキュリティ対策
(Movable Type 3.11-ja, 3.121-en_us など)
Xrea.comさんのサーバであっても、一時保存ファイル用ディレクトリのパーミッション (属性) は707となりますので、悪意のあるものは(セキュリティ上のバグがあれば) 実行ファイルをアップロードし、WWWサーバ改竄等も可能です。
ダイナミックページを活用し、再構築のスピードアップ、サーバ容量節約、セキュリティ対策を同時に行うため、cache, templates_c は、デフォルト以外のデイレクトリ名で運用する方法をお伝えします。
合わせて、.htaccess ファイルによるアクセス制限も推奨いたします。
⇒ http://hitomi.s47.xrea.com/shellscript.biz/archives/2004/11/htaccess.html
[mt]/php/mt.php
5 # $Id: mt.php,v 1.19 2004/10/01 00:22:45 bchoate Exp $
おおよその行数
==
187 $this->config['PHPTemplateDir'] or
188 $this->config['PHPTemplateDir'] = $blog_site_path .
189 DIRECTORY_SEPARATOR . ‘templates‘;
190 $this->config['PHPCacheDir'] or
191 $this->config['PHPCacheDir'] = $blog_site_path .
192 DIRECTORY_SEPARATOR . ‘cache‘;
templates をリネーム(例: templates_xyz) すると、自動的にコンパイル用ディレクトリ templates_c も変更されます。
cache もリネーム(例: cache_xyz) します。
ブログページのディレクトリ内に2つ新ディレクトリを作成し、属性 707 に変更します。
[blogpage]/templates_xyz_c
[blogpage]/cache_xyz
リネーム名は、推測し難いものにします。
■ 補足
ページ・レベルのキャッシング
Movable Typeユーザー・マニュアル日本語では、注: これは実験的な機能であり、環境によってはうまく動作しないこともあります。 となっていますが、Xrea.com さんのサーバは (もちろん) 動作 OK です。
ダイナミック(動的生成) ページを利用する場合、caching option も有効にした方がベターです。
【追 記 2004/11/2】
Ogawa::Memoranda さん から重要なご指摘をいただきました。
「$mt->cachingをtrueにすると、既定で1時間キャッシュが有効になります。そうすると、コメントをしても最悪で1時間反映されないことになるので注意が必要です。」
「ダイナミック・サイト起動用スクリプト」
テンプレートの名前: Dynamic Site Bootstrapper
出力ファイル名: mtview.php
編集後の phpファイルは (一行 $mt->caching = true; を追加するだけ)
<?php
include(‘<$MTCGIServerPath$>/php/mt.php’);
$mt = new MT(<$MTBlogID$>, ‘<$MTCGIServerPath$>/mt.cfg’);
$mt->caching = true;
$mt->view();
?>
となり、ブログページ内に ディレクトリ名 cache (属性 707に変更) を新規作成するだけです。
Remember Meをコメント文としたサンプルページ
[お詫び] Remember Me のスクリプトの一行がHTML上正しく表示されていませんでした。
本ページを参考にされた方は、
http://shellscript.biz/Remember_Me.html
の赤色の文字を追加して下さい。
Movable Type 3.11-ja へアップグレード後、テンプレートモジュール”Remember Me” を作成しないと(新規インストールでないとき)、
http://shellscript.biz/archives/000031.html
TypeKey サインイン/サインアウトは正常作動しますが、ブラウザ(IEなど)閲覧時、スクリプトエラーとなります。
「ページでエラーが発生しました」
このサンプル用ブログページのようになります。
もし、スクリプトエラーを表示しないNetscape 7.1などで閲覧すると、スクリプト挿入ミスについて、本人もクライアントも全くわかりません。
しかし、Remember me? (日本語表示: 情報を登録する?) のラジオボタンは選択できませんし、正しくコメントできないことがありますので、ご注意下さい。
なお、本ブログページは、最新バージョンのMovable Type(英語版)を使用していますので、TBは文字化けすることがあります。ご了承下さい。 日本語版 です。
テンプレート・モジュール “Remember Me” と個別アーカイブ
テンプレート template 【個別エントリーアーカイブ】の headタグ内には、下記のテンプレート・モジュール “Remember Me”ないし下記のjavascriptが必要です。
Movable Type 3.01D日本語版(および、英語 3.11バグフィックス版)まではjavascriptが挿入されていましたが、日本語版 3.11(および、英語版 3.12)からデフォルトでモジュールのタグ単独となっています。
もし、TypeKey サインイン/サインアウト新タグの利用のため、本テンプレートのみアップグレードした場合、テンプレート・モジュール「(テンプレートの名前) Remember Me」を新規に作成し、下記のjavascript全体をコピー・ペーストして、保存して下さい。
このスクリプトがないと、ブラウザ(Internet Explorerなど一部のもの)でエラー表示となります。
「ページでエラーが発生しました」
■ ところが、、、
<!–MTInclude module=”Remember Me”–> とコメント文としたり、下記javascriptを挿入せずブラウザ(IE)でエラー表示する 【個別エントリーアーカイブ】で運用しても、TypeKey サインイン/サインアウトは正常作動します。また、Netscapeで閲覧すると、スクリプトエラーを表示しないため、スクリプトの挿入ミスにブログ作成者もクライアントも全く気づかない・・ということになります。
しかし、実際には、Remember me? (日本語表示: 情報を登録する?) のラジオボタンは選択できませんし、正しくコメント投稿できないことがありますので、ご注意下さい。
サンプルページをご覧下さい。⇒ http://www.osbsd.net/
モジュールのタグ
<MTInclude module=”Remember Me”>
旧バージョンでのjavascript
<script type=”text/javascript” language=”javascript”>
<!–
var HOST = ‘<$MTBlogHost$>’;
// Copyright (c) 1996-1997 Athenia Associates.
// http://www.webreference.com/js/
// License is granted if and only if this entire
// copyright notice is included. By Tomer Shiran.
function setCookie (name, value, expires, path, domain, secure) {
var curCookie = name + “=” + escape(value) + (expires ? “; expires=” + expires : “”) + (path ? “; path=” + path : “”) + (domain ? “; domain=” + domain : “”) + (secure ? “secure” : “”);
document.cookie = curCookie;
}
function getCookie (name) {
var prefix = name + ‘=’;
var c = document.cookie;
var nullstring = ”;
var cookieStartIndex = c.indexOf(prefix);
if (cookieStartIndex == -1)
return nullstring;
var cookieEndIndex = c.indexOf(“;”, cookieStartIndex + prefix.length);
if (cookieEndIndex == -1)
cookieEndIndex = c.length;
return unescape(c.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}
function deleteCookie (name, path, domain) {
if (getCookie(name))
document.cookie = name + “=” + ((path) ? “; path=” + path : “”) + ((domain) ? “; domain=” + domain : “”) + “; expires=Thu, 01-Jan-70 00:00:01 GMT”;
}
function fixDate (date) {
var base = new Date(0);
var skew = base.getTime();
if (skew > 0)
date.setTime(date.getTime() – skew);
}
function rememberMe (f) {
var now = new Date();
fixDate(now);
now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);
now = now.toGMTString();
if (f.author != undefined)
setCookie(‘mtcmtauth’, f.author.value, now, ‘/’, ”, ”);
if (f.email != undefined)
setCookie(‘mtcmtmail’, f.email.value, now, ‘/’, ”, ”);
if (f.url != undefined)
setCookie(‘mtcmthome’, f.url.value, now, ‘/’, ”, ”);
}
function forgetMe (f) {
deleteCookie(‘mtcmtmail’, ‘/’, ”);
deleteCookie(‘mtcmthome’, ‘/’, ”);
deleteCookie(‘mtcmtauth’, ‘/’, ”);
f.email.value = ”;
f.author.value = ”;
f.url.value = ”;
}
//–>
</script>
Movable Type バイナリーファイル (tar.gz) と rbash
【追記 2004/12/1】
日本語版 フォーマット形式 tar.gzのバイナリファイルは、Xrea.com さんのサーバ(Linux系)へアップロード後、リモートPCからSSH接続して展開するとエラーとなります。
以前、MTバージョン 3.11日本語版で異常を確認しましたが、その後のインストールも正しく行われていないようで、初期ログイン画面において異常な表示となります(ただし、アップグレード版では、ブラウザ上異常表示とはなりません)。
Xrea.comさんのサーバでは、
[追記 2005/5/25]
XREA SUPPORT BOARD – Movable Typeの設置方法について
http://sb.xrea.com/showthread.php?p=64711#post64711
を参照し、提供中のスクリプトを利用する、または、
[追記はここまで]
フォーマット形式 zipなどをダウンロードして、クライアントPCで展開後にサーバにアップロードする方法となります。
因みに、バージョン3.12英語版のフォーマット形式 tar.gzや3.01D版ではこのような問題はありません。数回テストを行い確認しました。
SSH接続 rbash によるバイナリー展開時の結果: ×エラー ○ 正常
×【2004/12/01】 MT-3[1].121-upgrade-ja.tar.gz バージョン3.121日本語(アップグレード版) フォーマット形式 tar.gz
×【2004/10/19】 MT-3[1].11-full-lib-ja.tar.gz バージョン3.11日本語(フルインストール版) フォーマット形式 tar.gz
×【2004/10/19】 MT-3[1].11-upgrade-ja.tar.gz バージョン3.11日本語(アップグレード版) フォーマット形式 tar.gz
○【2004/12/01】 MT-3[1].121-upgrade-ja.zip バージョン3.121日本語 フォーマット形式 zip
○【2004/10/25】 MT-3[1].11-full-lib-ja.zip バージョン3.11日本語 フォーマット形式 zip
○【2004/10/20】 MT-3[1].121.tar.gz バージョン3.12英語版 (フルインストール版、アップグレード版) フォーマット形式 tar.gz
(SSH接続にて) シェル・コマンド tar, gunzip ともに展開時エラーとなります。
エラーメッセージ
| failed with return code 2 and error message
| gzip: stdin: decompression OK, trailing garbage ignored
| tar: Child returned status 2
| tarr: Error exit delayed from previous errors
と表示される ので、バイナリーファイル (tar.gz) 自体がちょっとおかしいのでは。 理由は、制限シェル rbash による可能性があります。
エントリー「rbash – restricted shell」
http://shellscript.biz/archives/000057.html
ping weblogs.com
www.weblogs.com へ ping送信するために
· Movable Type などの blogツールでは自動設定できます。
ping送信がエラーとなったとき、http://rpc.weblogs.com/RPC2
へ送信します。
· http://blogshares.com/
のメニュー “home”から Add your blog をクリックし、フォーム入力すると、url をweblogs.comに登録できます。blogshares.com のログイン登録は不要です。
なお、blogshares.com では、
Upgrade your account, Premium Members, Start your blog now
は有料です。