アンケートCGIなどを利用した場合に回答がサーバー上に保存され、そのデータを外部から見られてしまう危険があります。
特に何も対策しなければ、保存データのURLを直接たたけば表示されてしまいます。
保存データの拡張子を.cgiにすることで回避できると思いますが、これだけで安全なのでしょうか?また、どの程度安全なのでしょうか?
他に対策方法ありましたら、教えて下さい。
回答を頂く身で恐れいりますが、参考リンクのみの回答はご遠慮ねがいます。
データファイルはURLで参照できない場所に置くべきです。
つまりpublic_htmlより上位のディレクトリに置くんです。
パーミッションも落としておきましょう。
基本的にowner以外にwritable権限を与える必要はないはずです。
:: KENT WEB > データ収集加工 ::
いくら拡張子をcgiにしても回避できません。
ブラウザで「見えない」だけですから、直接DLすることで抜かれてしまいます。
見られたくないデータは「アクセス制限」が一番です。
URLは、初心者用アクセス制限のシステムです。
難易度別の情報、参考になります。
BASIC認証で保護したディレクトリ内にデータを保存するというのが安全ということになるのでしょうか。
以下はUNIX系サーバ+Perl CGIを使用されているという前提でですが・・・
データファイルの拡張子を*.cgiとすればアドレス直打ちでも
データが見えなくなる、というのは正しい回避方法ではありません。
データファイルに対してのアクセス権限(パーミッション)を設定し、
外からはアドレス直打ちでも見えないようサーバーに指示するのが
良いでしょう。
ただ、ご使用のサーバー環境や使用しているCGIによって具体的な
処理方法が違うので、まずは(ご自分で処理ができそうになければ)
サーバー管理者に問い合わせるのがよいと思います。
やはり基本的にはパーミッションで制限するというのが王道のようですね。
拡張子を.cgiにしてパーミッションで制限したのにも関わらず、情報が漏れる場合ってどんな状況になるのでしょうか?ルートを取られるということになるのかな?
http://www.atmarkit.co.jp/fsecurity/rensai/web01/web01.html
Webサイトのセキュリティ侵害事件から見た脆弱点
その程度では残念ながら安全とは言えません。
なぜ.cgiなのでしょう? まったく予測のつかない拡張子でも良いのでは?
以下はデータ保護の基礎です。是非検討してみてください。
1. 他人に見せる必要がなければ、サーバにデータを残さない。データはmailで自分に送る、サーバに書き込む必要があるなら最新のデータ以外は消しておく。
2. データにアクセス制限を付ける
- パーミッション
- .htacessによるパスワード
- ブラウザでアクセスできる場所にデータを書き込まない
3. データ/パスワードを暗号化する
回答ありがとうございます。
.cgiにする理由はデータを丸見え状態でなくエラー表示にするという点での回避策です。
アンケートを例にしてしまったのが悪かったですが、メルマガ購読の登録/削除の場合は「1」は難しく「2」「3」の対策が必要なようですね。
Yahoo!
URL はダミーです。
今の状況で、Webサーバーを公開すること自体危険なような気もします。。。
(サーバーがセキュアなレンタルサーバーなどでセキュリティーも問題ない状態でしたら、上記発言お詫び申し上げます。)
FTP や Telnet も非常に危険であることはご存知でしょうか?これらの通信内容はインターネットに平分で流れるので知識のある人間がパケットを拾えば作業内容が全て漏れてしまいます。
(telnet で root ユーザーに su した場合、root のパスワードを読み取られる可能性もあります。)
質問に対する回答として、可能であれば内部(ローカルアドレス)に別マシンを稼動させ、そちらのデータに書き込むようにした方が良いと思います。
また、アンケートが個人情報(住所、電話番号など)を含む場合は最低限 https での登録経路を用意するべきだと思います。
回答ありがとうございます。
保存場所、送信経路、参考になりました。
http://www.atmarkit.co.jp/fsecurity/rensai/webhole02/webhole01.h...
@IT:Webアプリケーションに潜むセキュリティホール(2) - Page1
いくらファイルのパーミッションを変更したり、非公開のディレクトリにデータファイルを配置しようが、CGI等のアプリケーション自身にセキュリティホールや脆弱性があった場合は無意味です。アプリのセキュリティの確保とデータファイル自身のセキュリティの両方を確保する必要があると思います。
回答ありがとうございます。
プログラムの信頼性...判断に困るところですね。
意図した結果が出てしまうと、作った人ですらその中の問題を見落としてしまう部分でしょうし。
1、一番安全なのは、WEBからアクセスできないところへ、ファイルを置く。
2、パーミッションの設定。
(この、1.2についてはサーバ会社で運用を制限しているところが多いですので、ご希望に沿うような設定が不可能な場合が多いです。)
3、拡張子の変更。
(データファイル単体を守るためには、一番重要だと思います。)
しかし、FTP(ID、passが漏れる)、TELNET等で中を覘かれてしまえば何をしても対抗できません。
通常の範囲であれば、ご質問のように拡張子の変更でOKだと思います。
ためしに、どこかへダミーデータを設置して、はてなで尋ねられたらいかがでしょう。
ここはかなりのスキルをお持ちの方がいらっしゃいますので、
「
にデータが置いてあります。なんて書いてあるか読めますか。」
見たいな質問をしてみたらいかがでしょう。
回答ありがとうございます。
まさにそれを試したいのです。私のスキルが低いため時間は掛かりそうですが、そのための情報あつめでもあります。
そのときの報酬は、そのときの残りポイント全放出にしたいと思います。
とても参考になります!CGIの知識に乏しくパーミッションの設定は任せっきりで、755や604にしていました。
しかし、共用タイプのせいか上位にアクセスできず。
パーミッションの設定で外部からの不正アクセスは防げるのでしょうか。情報ありましたら宜しくお願いします。