「同じ自宅サーバー作ろうよ」計画! Ver3.x
 
■cgiのセキュリティ■

HOMEへ

■cgiの選択のポイント

たいていの掲示板には投稿者用のパスワードを入力する部分がありますね。下記の削除用キーなどは良い例です。



ではTEST入力して、そのログファイルをメモ帳などのエディダで見てみましょう。このTEST掲示板の場合は ibbs.datでした(cgiによって拡張子は千差万別です)。


上の赤枠の部分がパスワード(削除キー)です。暗号化されていて管理者の私さえ解読不可能です。

ここでポイント
「cgi選択はパスワードが暗号化される物を選ぶ」

理由:
管理者であっても人のパスワードは知るべきではない。と私は思います。なぜなら、ほとんどの人は各サイトに投稿するとき同じパスワードを使っています。逆に言うと管理者のあなたがそのパスワードを利用して人の投稿を変更したり削除したりの悪戯が出来るのです。もちろん、あってはならない事ですねどね。
もし、投稿者が「パスワードを忘れたので削除が出来ません」と連絡が入った場合、管理者がログの1行を削除、或いはcgiの管理画面から削除してあげればいい事です。

やっとの思いで設置したのにパスワードが丸見えのcgiがいくつか有りました。でも私は使用をやめました。

■cgi設置のポイント

各cgi配布サイトに設置の説明がありますね。

私も説明通りにホームにibbsフォルダを作り設置してみました。 サンプル掲示板を例に見てみましょう。

ブラウザから掲示板アクセスすると… OK、OK。これで掲示板を運用できるぞ!



いや、待てよ…このフォルダにログファイルも有ったよね。

さっそくアクセス。この掲示板のログの拡張子は dat 。


ま、まずい!ログ(中身)が丸見え!

って事で、少なくとも私のWindows環境(Unixは知りません)では拡張子を変えてアクセスすると簡単にそのファイルを見れちゃうんです。
WinNTやW2K環境で、そのファイルのアクセス権設定や隠しファイルに変更しても不都合が出たりしてダメでした。

ここでポイント
「ログファイルは別フォルダに設置すべし」

私のAN HTTPDの設定では ドキュメントルート(public_html)配下にアクセスを許可している環境ですから、逆にアクセスできないルート以上の場所にログ専用のフォルダを作り、そこにログを置くようにcgiを改良しました。


ここが各cgiログ専用のフォルダ
    ibbsのログはここに
ここがドキュメントルートです

ここにibbsのcgi本体



cgiの一部分を変更します(設定例)。

$c_f  = "./icount.dat"; # カウンタファイルの名前
$c_loc= "icount.loc"; # ↑のロックファイル(使用は44行目に依存/ファイル名設定のみ)
$cgi_f= "./ibbs.cgi"; # このファイル
$log  = "./ibbs.dat"; # 記録ファイル−−>$log  = "../../../log/ibbs/ibbs.dat";
$lockf= "./ibbs.lock"; # ロックファイル(使用は44行目に依存)
$srch = "./isrch.cgi"; # 検索/過去ログ閲覧用CGI

「自分(cgi)から見て3階層上がった所にあるlogフォルダ配下のibbsフォルダにibbs.datを置く」指定です。上記の例はログファイル部分しか変更していませんが必要に応じて適宜変更してください。
これで普通のブラウザ操作ではログファイル(ibbs.dat)は誰も見れません(たいていログや設定関係の拡張子は dat log txt ini です)。
最近のcgi提供者の方々は「ログファイル丸見え対策」をしてくれており拡張子を「.cgi」や「.pl」などのperl実行拡張子にしています。
こうするとログファイル自体perlの文法にそぐわない形式のファイルですからアクセスされた場合WEBサーバーのアクセスエラーとなり中身が見られることはありません。
しかし私はログファイルの場所を上位に替える方法を推奨します。セキュリティにも良い方向ですしバックアップもlogフォルダにまとめておけば楽な管理ができるからです。

■まとめ

この様にcgiの設置の誤りがあるとパスワードやログを見られたりします。OSやブラウザのセキュリティに目を奪われがちですが、こんな些細なcgiにも盲点がある事を知っておいてください。
★Winサーバーの皆さん。あなたのログファイル大丈夫ですか?

HOMEへ

 
 
SAO「同じ自宅サーバー作ろうよ」計画!