新規記事投稿
フォロー記事投稿
記事のキャンセル
From: にあ
<nir@mxa.meshnet.or.jp>
Subject: Re: パスワードを受け取って実行するスクリプト
Date: 1997/04/12 21:22:03
Reference: mesh.program/00264
4月12日に、Say2さんは書きました。
>らくだ本を頼りに、簡単なスクリプトを作っているのですが、解らないことがあります。
>フォームからパスワードを受け取って、パスワードが正しければ処理を行う
>スクリプトをPerlで作ったのですが、このようなスクリプトはセキュリティ上問題
>ないでしょうか?
>
ラクダ本を見てと言うことは、6章の "Real Perl Programs" (old camel) に例のある
"passwd - Password Changing Program" 辺りを参考に crypt を使ったスクリプトを
書いていると言うことでしょうか? それでしたら暗号化されたパスワードを記録して
いるファイルや、さらに、CGIスクリプト自身をのぞかれても問題ありません。
暗号化されたパスワードから元のパスワードを復元することは非常に手間のかかる
仕事なので、CGIでの簡単なセキュリティ確保程度なら十分だと思います。
# ここの、contents ファイルに書かれている、暗号化キャンセルコードなどは
# その実例です。
もちろん、CGIを使ってもっと微妙な情報を扱いたいためにパスワードを
かけている場合には、暗号化パスワードファイルと言えども読まれないように
しなければなりません。サーヴァを介して読める所(ホームペーヂの下)などに
置いてはいけません。
また、もっと気を使うなら、CGI中に作り込むことやサーヴァ権限で読める様な
ファイル属性を使うのは避け、自分のユーザ権限で動かす様に設定された CGI で
自分のユーザ権限でしか読めない様に設定した暗号化ファイルを使うようにします。
つまり、CGIがサーヴァ権限で読める場合、同じサイトを共用している人からは
丸見えになってしまうからです。
ユーザ権限でCGIを動かすには、cgiwrap や Apache にある "SetUID CGI Execution" の
様な機構を使うと良いでしょう。とは言え、この辺はサーヴァが対応していなければ
使えませんが。