インターネットサイトのウェブルートにウェブドキュメント以外のファイルを置くことの問題と解決方法

このQ&Aのポイント
  • ウェブルートの下にウェブドキュメント以外のファイルを置くことは、セキュリティ上のリスクを伴います。
  • ウェブルートにウェブドキュメント以外のファイルを配置することで、不正アクセスや情報漏洩の可能性が高まります。
  • ウェブルート以外の場所にウェブドキュメント以外のファイルを配置することで、セキュリティをより強化できます。
回答を見る
  • ベストアンサー

インターネットサイトのウェブルートの下にウェブドキュメント以外のファイ

インターネットサイトのウェブルートの下にウェブドキュメント以外のファイルを置くことについて。 以下のような配置のサーバがあります。 /dir1 | +-/dir2 __| __+-/htdocs <- site1.jp ウェブルート(外からアクセス可) ____| ____+-/dir3 <- php置き場 ____|_+-WebPage1.php <- phpで作成したWEBページ ____|_+-WebPage2.php ____|_+-BatchPgm1.php <- phpで作成したバッチアプリ ____|_+-BatchPgm2.php ____| ____+-/dir4 <- シェル置き場 ______+-Shell1.sh <- BatchPgm1.phpのスタータ ______+-Shell2.sh <- BatchPgm2.phpのスタータ ______+-Shell3.sh <- 単独で完結するシェル 私はネットワークセキュリティに詳しくないですが、 ウェブルートの下にウェブドキュメント以外の物を置かれている状態が我慢できません。 以下のようにしたいのですが。。。 /dir1 | +-/dir2 __| __+-/htdocs <- site1.jp ウェブルート(外からアクセス可) __|_| __|_+-/dir3 <- php置き場 __|___+-WebPage1.php <- phpで作成したWEBページ __|___+-WebPage2.php __| __+-/dir4 <- シェル置き場 __|_+-Shell1.sh <- BatchPgm1.phpのスタータ __|_+-Shell2.sh <- BatchPgm2.phpのスタータ __|_+-Shell3.sh <- 単独で完結するシェル __| __+-/dir5 <- php置き場(バッチ用) ____+-BatchPgm1.php <- phpで作成したバッチアプリ ____+-BatchPgm2.php どうしたものでしょうか。 1、2に関しては、 そこは絶対にそうするべきだ。 そこはどちらでも良い。 そこはもっと違う方法が良い。 3に関しては、 出来る(どうすれば) 出来ない など、回答下さい。 (1) 「http://site1.jp/dir4/Shell1.sh」と叩かれたら、Shell1.shをそのまま盗まれます。 でも、「dir4/Shell1.shの部分は見えている訳じゃないから、偶然直で打たれて見付かる可能性なんて殆どありえない」と反論されると、なんとなく、根拠の薄い解答ならできますが、具体的で、どの程度の危険性があるのか言い返せる材料がありません。 (2) PHPで書いたバッチ目的のアプリはウェブルートと関係ないところに置きたいのですが、 「PHPはPHPで固めて置きたい」とい言われたら、これも具体的にどのような問題があるのか説明がしにくいです。 (3) 1のケース2のケース共に、「サーバやファイヤーウォールでなんとかできるんじゃないの?」 と言われると、出来るとも出来ないとも言えません。

  • ngwave
  • お礼率65% (240/366)

質問者が選んだベストアンサー

  • ベストアンサー
  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.1

(1)については、Shell1.shの実行可能性×重要性=危険度と、 それを実行させないようにする対策費用のバランスだと 思います。 確かに実行可能性は低いですが、そのシェルの実行で 顧客情報が漏れるなら、非常にやばいと思います。 (ウィルス感染等の別ルートで社内情報やファイル名が漏れる可能性とか、 機能からファイル名を類推するとか、文字総当たりでファイル名を 当てるとか、実行可能性は0ではないと思います。) 一方、対策費用はシェルファイルを移動して、移動先でも 従来通り実行できるか確認するだけなのでわずかだと 思います。 質問者さんの意見通り、変な心配する前に 基本的に対策すべきと思います。 (2)も(1)と同様です。 「PHPはPHPで固めて置きたい」などというのは、 論理的な根拠のない感覚的な意見にしか見えません。 同じPHPでも、用途や使用者が異なるのであれば、 別フォルダにして別管理するのが当然と思います。 (3)は、通常のファイアーウォールでは対策できません。 httpリクエスト内容を分析する必要があるためです。 いわゆるWebAPファイアーウォール(WAF)なら対策できると 思いますが、おそらく高価です。それに、たぷんWAFの設定で 拒否するURLを指定することになると思いますので、 結局面倒です。質問者さんの意見通り、フォルダ設計から 変えて対策する方がよっぽど安価で安全だと思います。

ngwave
質問者

お礼

ありがとうございます。 参考になりました。

関連するQ&A

  • Apacheのドキュメントルート

    現在、PCにApacheをインストールしておりWeb公開しております。 Apacheのドキュメントルートを c:\xampp\htdocs\public_html に設定しておりFTPソフトにてこのpublic_htmlにファイルをアップロードしようとすると エラーになり 「c:\xampp\htdocs\public_html に対する許可されていない操作です。」 というエラーメッセージが出ます。 ちなみにpublic_html配下にサブフォルダを作成するとそこにはFTPソフトでアップロードできる 状態です。 Apacheのドキュメントルートってファイルの書き込みはできないのでしょうか。

  • sudoの設定方法について

    こちらで質問させて頂きながらシェルスクリプトの勉強をしています。 sudoの記載について、いろいろと試したのですがうまくいきません。 アドバイスお願いいたします。 ◆やりたい事 ・非ルートでログイン時、Shell.shをroot権限で実行したい ・Shell.shからは、他シェルスクリプトが呼ばれる  ※他シェルスクリプトもroot権限が必要 ◆現状 ・sudoers ファイルに  user1 ALL=(ALL) ALL  と記載するとうまくいくが、  user1 ALL=(ALL) /フルパス/Shell.sh  とすると権限がないと言われる ◆質問  Shell.shがroot権限で実行できれば、Shell.shから呼ばれるシェルスクリプトも  root権限になる認識なのですが、間違っているのでしょうか?

  • XAMPPのドキュメントルート変更方法

    お世話になります XAMPPを用いて開発中のPHPサイトのテストをローカルで行いたいと思っております 通常XAMPPのドキュメントルートは下記の通りに設定されているかと思います C:/xampp/htdocs しかしながら現在ソースファイルをDドライブ中のフォルダ(仮にD:/phpfolderとします)に 格納しているので、ドキュメントルートを変更したいのですがC:/xampp下にない ディレクトリへとドキュメントルートを変更することは可能でしょうか。 可能でしたらその方法を教えてくださいますようお願いします。

    • ベストアンサー
    • PHP
  • インターネットのWebサイトの何が楽しいんですか?

    インターネットのWebサイトの何が楽しいんですか? インターネットのWebサイトって暇人のためのサービスなのは何故なのでしょう? 忙しい人はインターネットのWebサイトを見ないと思います。 暇人のためのコンテンツしかないですよね。 毎日、上位に上がっているランキングのWebページを見ても暇人が作成したページで何が楽しいのかさっぱり分かりません。 Webサイトの質が落ちたのか検索サイトの結果の質が落ちたのでしょうか? 調べてもアフィリエイトリンクが貼られた比較で人気順といってもアフィリエイトのリターンのキックバック率が高いメーカーが上位になってるだけという見る価値もない。 見るだけ時間の無駄な気がします。 インターネットのWebサイトの何が楽しいんですか? よく質問したら、検索しろと言われるけど、検索した結果のWebサイトに魅力を感じられないんです。 まずいつ作成されたWebページか分からない。 質問サイトの回答は今日の情報って分かる。 いつ誰が書いたかもわからないWebサイトの情報に何の価値があるのでしょう? 私はインターネットのWebサイトの何が良いのかわからないので利用していないんです。 JKも検索サイトを利用せずにインスタグラムで検索している。 今はアプリで検索する人が多いのに、暇人が作った暇人が見るWebサイトを検索するGoogle検索を使って調べろという老害を何とかして欲しい。 Webサイトの何が良いのでしょう?メリットがない。アフィリエイトばかり。広告ばかり。

  • Linux Document Rootについて

    職場で、Linuxの経験が無いにも関わらず WEBサイトのサーバ移行をしていまして、躓きました。 新サーバはAWSにてCentOS 6.9 Apache 2.2.15 php 5.3.3となっています。 率直な質問ですが、Document Rootとは サイトのアドレスを叩いた時にそこのディレクトリの index.html(.php)が表示される場所という認識で 良いでしょうか? それが合っているのであれば、 httpd.conf内にてDocument Rootを/aaa/bbb/ccc/から /ddd/eee/fffに変えてやると、サイトのアドレスを 叩いた時に/ddd/eee/fff/の中にあるindex.html(.php)を 読みにいくという動作になるということでしょうか? .htaccessにてリダイレクトも考えましたが、 それも上手くいってません。 <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^/aaa/bbb/ccc/(.*)$ /ddd/eee/fff/$1 [R=301,L] </IfModule> これで合ってますでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • Webサイトは、どの言語で作るべきか?

    動的なWebサイトを構築しようと思っていますが、 PHPかVbScriptの、どの言語で作成しようか迷ってます。 良く見かけるのは、PHPを使ったサイトですね。 Webサイトを乗せるレンタルサーバーでも動作稼動ですので、問題はありません。 しかし、私にPHPの経験がありません。 VbScriptに関しては、経験が長いので問題なく作成できます。 VbScriptでWebサイトを構築したときの制約というのはあるのでしょうか?

  • PHPのセキュリティ(ドキュメントルート・localhost)

    PHPのセキュリティに関して、 どうしても解決できないことがありますので、教えてください。 (1)「ドキュメントルートより上にファイルを置く方法」 セキュリティの本や掲示板などで、 「MYSQL等のパスワードなどが記載されたphpファイルは、 ドキュメントルートより上に置いたほうが良い」 と書かれています。 http://www.amazon.co.jp/gp/product/4883374718/sr=11-1/qid=1164952057/ref=sr_11_1/503-4091124-2745559 https://www.xserver.ne.jp/support/support3d-30.html ドキュメントルートより上とは、 サイトに通常アップロードするフォルダ (index.phpがあるフォルダ) より上に置くということですよね。 しかしレンタルサーバーでサイト構築を行う場合、 それは不可能ではないでしょうか? ご存じの方、恐縮ですが、 なるべく具体的に教えてください。 (2)「localhostのセキュリティー」 上記に書いたように、サイト運営はレンタルサーバーで行い、 今後も自宅サーバーで構築すう予定はありません。 それでも、htdocs内のファイルや、 localhostでPHP、MYSQLに関してもセキュリティ対策は必要でしょうか。 もし必要な場合は、必要な対策内容を教えてください。 以上お時間とりますが、何卒宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPでのドキュメントルート指定方法

    PHPでのドキュメントルートの指定方法がうまくいかず困っています。 マルチドメインで組んでいます。 公開ディレクトリのルートは /home/hoge/www になります。 wwwの中に/piyo/でマルチドメインを組んでいます。 →絶対リンクを/home/hoge/www/piyo/ ここに指定したいです。 あるサイトを見てcommon.phpを作成し、index.phpと同じ階層に置き、index.phpの頭に <?php include 'common.php'; ?> を指定すると設定ができると記載されていたので下記の様に設定しました。 // common.php // <?php // サーバー上の絶対パスを記入 // これは公開ディレクトリのルート(サイトのルートディレクトリ)と一致 $__DOC_ROOT__ = '/home/hoge/www/piyo/ <http://piyo.co.jp/> '; ?> // index.php // <?php include 'common.php'; ?> <!doctype html> <html lang="ja"> … <?php echo $_SERVER['DOCUMENT_ROOT']; ?> … </html> echoで呼び出してみましたがサイトのルートディレクトリが /home/hoge/www こちらになり変更されていませんでした。 これを /home/hoge/www/piyo/ に変更したいと思います。 ご回答よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPからシェルが動作しない

     PHPを通して外部コマンドを実行したいのですが、うまく動作してくれません。  具体的には、あるページでボタンを押したら、IPMessengerでメッセージを飛ばす機能(コマンド名:tipmsg)を実装したいのです。  シェルスクリプトは「コンソール」上では、きちんと動作してくれます。  例(shell.sh)  echo HELLO | tipmsg -e -u anyuser  また、コンソール上で「php」を直接動かしても、きちんと動作してくれます。(「php doshell.php」)  例(doshell.php) <? echo "Hello"; #動作するかどうかを確認するための表示させる system("shell.sh"); ?>  両方とも、コンソール上では、きちんと動作してくれるのですが、ブラウザ上からだと動作してくれません。  ちなみに、PHPからシェルを呼び出す以下のコマンドもすべて試しました。  exec("./shell.sh")  system("./shell.sh")  shell_exec("./shell.sh")  他にも環境変数をいじったり、アドミッションを調整したりもしましたが、まったく目的どおりの動作をしてくれません。  もしも、わかる方がいたらご教授のほど、お願いします。

    • 締切済み
    • PHP
  • xamppドキュメントルートの設定

    パーフェクトPHPという書籍を見ながら作業を進めているのですが行き詰ってしまいました。 xamppのドキュメントルートの設定のところです。 ・httpd-vhosts.confファイルに以下の文章を NameVirtualHost *:80 <VirtualHost *:80> ServerName study.localhost DocumentRoot C:/xampp/htdocs/study.localhost DirectoryIndex index.php index.html <Directory "C:/xampp/htdocs/study.localhost"> AllowOverride All Allow from All </Directory> </VirtualHost> ・hostsファイルに以下の文章を 127.0.0.1 study.localhost 上記の2つを書き込むことによって ブラウザからhttp://study.localhost/にアクセスできるようになる。 と書いてあるのですが書き込んでもアクセスができず以下のように表示されます。 --------------------------------------------------------------------------- Object not found! 要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。 サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。 Error 404 study.localhost Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.5.15 --------------------------------------------------------------------------- 何がいけないのでしょうか? 書籍にはこの部分はあっさり書かれており何がいけないのか分りません。 Apache、MySQLの起動はできています。 httpd-vhosts.confファイルへの書き込みを行わなければXampp for Windowsのページも出てきます。 PCは windows7を使用しています。 xamppはv3.2.1です。

    • ベストアンサー
    • PHP