home / back

Motd - 2002年4月15日

以前からの懸案であったが、 公開サーバ上にマイブックマークページを置く作業を開始した。 どこからでも、 どのブラウザからでも参照できるようにするためだが、 自分以外には見せないように、 パスワードをつけてある。

しかしただのBasic認証では使い勝手が悪い。 以下の要件を満たすように考えた。

構造はこんな感じ。
ブックマークファイル:

if (クッキーあり) {
    クッキー期限延長;
    キャッシュさせないようなヘッダ出力;
    ブックマーク本体表示;
    クッキークリアへのリンクも表示;
} else {
    乱数でチャレンジナンバー表示;
    パスワード入力フォーム;
    チャレンジとパスワードを持ってクッキーセットページへ;
}
クッキーセットページ:
持ってきたチャレンジから内緒の演算を施してパスワードを生成;
if (ここへはブックマークファイルのフォームからやってきていて、
    かつ、持ってきたパスワードと演算したパスワードが一致する) {
    クッキーを設定する;
}
Location:でブックマークファイルへ即戻り;
クッキークリアページ:
クッキーをクリアする;
Location:でブックマークファイルへ即戻り;

チャレンジは、例えば4桁の数字。 内緒の演算は、人前で入力することになっても悟られない程度で、 かつ一瞬で暗算できる程度のもの。 例えば、最初の3つの桁の数字を足して1を加える、のような。 暗算力に自信があるなら、 各桁の数字を足し算してさらに四乗する、でも良い :-)

人のマシンを借りて開くときには、 まずブラウザのウィンドウを新規に開き(ショートカットはCTRL+N)、 マイブックマークにアクセスしてパスワード入力。 使い終わったらクッキークリアしておく。

キャッシュさせない制御は、 PHPマニュアルのheader()のページを参考。

PHPで書いているが、 Perl等を使ったCGIでも書けるはず。

ご意見、ご感想は楽屋裏まで
home / back