• ベストアンサー

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

gfct9sの回答

  • gfct9s
  • ベストアンサー率90% (10/11)
回答No.1

ドキュメントルートより上にファイルを置くのは、レンタルサーバーでは 不可能ではないかということですね。 xserverの場合はpublic_html/がドキュメントルートということですが、 これは自分専用のフォルダが/home/user/だとすれば、ドキュメント ルートが/home/user/public_html/だということだと思います。 この場合、/home/user/public_html/index.phpは、 http://www.example.com/index.phpでアクセスできると仮定すると、 そのindex.phpの中で、 $fp = fopen('../password.txt', 'r'); なんてやったりしますと、開くファイルは/home/user/password.txtになります。 このpassword.txtはインターネットからブラウザを用いて見ようとしても 見えませんよね。もちろん/home/user/は自分専用のフォルダなので、 password.txtを設置することはできます。 しかし、/home/user/public_html/index.phpで、 $fp = fopen('password.txt', 'r'); とやった場合、開くのは/home/user/public_html/password.txtです。 確かにそこにもpassword.txtを設置できますが、これは http://www.example.com/password.txtにアクセスすると見えて しまいます。まずいですね。 私もとあるレンタルサーバー(共用)を利用していますが、上記と同様の フォルダ構成になっているので、ドキュメントルートのより上にファイルを 置くことができています。 2点目のlocalhostで行うセキュリティ対策というのは何のことか よくわからなかったのですが、もし「PHPサイバーテロの技法」の記述に ついての質問でしたら、ページ数を指摘していただけますか。 あるいは、「セキュリティ対策」の内容について具体的に書いて頂けますと、 お答えできるとおもいます。

miraikuru
質問者

補足

gfct9sさん 具体的なアドバイスありがとうございます。 こんなにまで丁寧に書いて頂いて感動しています。 ドキュメントルートに関しての疑問が、ようやく解決しました。 gfct9sさんのコメントから、 「フォルダ構成はサーバーによって異なるのでは」と考え、 現在使用中のロリポップサーバーを調べた所、 ドキュメントルートより上にファイルを置けないことがわかりました。 対応してないサーバーで実現しようとしてたのが、 そもそも間違っていたのです。 セキュリティを求める際は、 対応しているサーバーを選ぶことにしますね。 gfct9sさんのおかげで安心しました。 本当にありがとうございます。 二つ目の質問は、理解しにくい内容で失礼しました。 私が悩んでるのは、 「テストしか行わないlocalhost環境にも、 サーバーテロの危険性はあるのか」ということです。 webにアップしているファイルには対策は必要でしょうが、 テスト環境にある、htdocsにあるファイルを、 localhostに接続する際にも、 XSSやSQL Injectionの被害を受けることはあるのでしょうか。 ということなんです。 その恐れがあると、 htdocs内で単純に作ったスクリプトにも、 気を配らないといけなくてはならなく面倒だなと。 「PHPサイバーテロの技法」とは関係なく、 私個人が抱えている悩みです。 説明が足りなければ、また補足させてください。 お時間とりますが、宜しくお願い致します。

関連するQ&A

  • My Documents を localhost にしてもセキュリティは大丈夫?

    XAMPP 1.6.8 を使用です。 My Documents の中にフォルダがとても多いので ブラウザからアドレスを入力してアクセスしたいと思うのですが、 My Documents のフォルダを丸ごと localhost として設定するのは セキュリティの面で大丈夫でしょうか? localhost の中にファイルを入れることで 外部からアクセスされ易くなるか お伺いしたいと思いました。 php の動作確認など便利なので 普段は自分のウェブサイトのリンク集にアクセスする形で http://localhost/links/ をブラウザのホームページにしてます。

  • (レンタルサーバの)ドキュメントルートの配下にディレクトリーを作成して

    (レンタルサーバの)ドキュメントルートの配下にディレクトリーを作成して、ここにPHPファイルを置きましたが、自宅のブラウザーから直接PHPソースをのぞく(見る)には、どのように操作するのですか? (他者から、この配置だとソースが見られてしまうので、セキュリティー上良くないと指摘されたのですが)

    • 締切済み
    • PHP
  • PHPでFTP関数を使いたいと考えていますが、

    PHPでFTP関数を使いたいと考えていますが、 いろいろ回ってみても中々使えるサーバに出会えません。 ロリポップでは設定はされているとの記事を見かけたのですが、 ドキュメントルート以下しか使えないなど不便な面が多く使うのは控えようかと考えています。 私の探し方も上手くないのでしょうか・・・。 ある程度金額は高くても良いので(~10000円) ドキュメントルートより上も操作可能で、なおかつPHPとmysqlが使え、 PHPのftp関数がデフォルトもしくは設定にて使用可能なレンタルサーバをご存知の方は お教えいただけないでしょうか? お手数ですがよろしくお願いいたします。

  • ドキュメントルートについて

    すいません、サーバーを借りた際のドキュメントルートについてなんですが、ドキュメントルートとは同一ドメインサーバ内の公開エリアでの最上位階層のこと。ということらしいんですが、このドキュメントルートがサーバによってpublic_htmlやhtdocsの場合があるんですが、これは、 ドキュメントルート=public_html=htdocs と考えて良いんでしょうか?   また、ROOT_PATHというのは各サイトの最上位階層のディレクトリ(各サイトのindex.htmlが入っている)のことで良いんですよね? 宜しくお願いします。

  • ドキュメントルートについて(サイト公開パス)

    現在プログラミングを学んでいる超初心者です。 現在PHPを勉強中でレンタルサーバーを使い 動作確認などを行いたいのですがうまくいきません。 レンタルサーバーはウェブクロウと言うところを使っています そしてFFFTPでアップロードしても HTTP403がでたり 「このページは表示されません」になったりしいろいろ調べたりしましたが 現在お手上げ状態です。 サーバー情報に ドキュメントルートというのがありました これは何か関係があるのでしょうか? ドキュメントルートは下記のとうりです。 /home/nakahiro7/[ドメイン名]/public_html/ その他何かご指摘、方法があれば教えていただければ幸いです。 目的は PHPの動作確認、MYSQLとちゃんと連携できているかなどを確認したいです。(会員登録のような機能などちゃんとできてるか確認したい) 無知な私にどうかお知恵をおかしください。

    • ベストアンサー
    • MySQL
  • 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のMySQL接続について

    Mysqlの超初心者なので質問に不備などがございましたらすみません。 次のサイト(http://blog.nextbird.com/?p=23)に掲載している通りに会員システム構築を行っております。 レンタルサーバー(Cside:mySQl使用可能)のphpmyadminでデータベースを作成しました。データベースサーバー名やパスワードなどもiniファイルに記入して接続用のファイルでincludeしています。 すべてアップロードし、試しに自分でフォーム(名前やEmailアドレスなど)に記入したところ、『Can't connect to local MySQL server through socket '/tmp/mysql.sock' 』というエラーが出ます。 『local MySQL server』ということはローカルのMysqlに関係しているようなのですが、レンタルサーバーですべてを行っているのにローカルでMySQLをインストールして設定することなどが必要なのでしょうか?Csideのphpmyadminで『phpMyAdmin 2.6.4-pl3 へようこそ』の下に 『MySQL 4.0.24 は localhost 上 *******@localhost として実行しています。』と書いてあるのも気になります。 php自体は経験有りなのですが、MySQLの接続で困っている状況です。とにかく、、『Can't connect to local MySQL server through socket '/tmp/mysql.sock' 』だけは回避したいのですが、どなたかわかりやすくお教えして頂けませんでしょうか? 分かりづらい質問で誠に申し訳ございません。

  • 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
  • localhost/~.php で404エラー

    初心者です。PHPを勉強したいのですが、 localhost/phpファイル名 に接続すると、404 not found になってしまいます。 OSはmacです。 /Library/WebServer/Documentsに、CotEditorで作成したtest.phpを入れましたが、 http://localhost/test.php に接続しても404エラーになります。 http://localhostに接続するとIt worksと表示されますし、 PHPのLoadModuleの設定も有効になっております。 どういった原因が考えられるでしょうか。

  • ドキュメントルートのphpファイルが削除できない

    ●質問の主旨 ドキュメントルート(var/www/html)に配置した、 phpファイル(quiz.php)をrootユーザーから、root権限で rmコマンドで削除しようとしましたが、 メッセージが表示されるだけで削除できません。なぜでしょうか? ご存知の方がいらっしゃいましたら、ご教示願います。 ●質問の補足 現在のコマンドの状況は以下の通りです。 [root@linuxserver html]#rm quiz.php rm: remove regular file 'quiz.php'? [root@linuxserver html]#ls -l -rw-r--r-- root root 781 Jan 13 22:11 quiz.php またこのquiz.phpファイルはwindowsクライアントPCで作成し、 以下の経過でドキュメントルートにアップロードしました。 1.WinSCPのSFTPで一般ユーザのホームディレクトリに転送 ↓ 2.一般ユーザのホームディレクトリ(/home/user)から cpコマンドでドキュメントルート(var/www/html)にコピペ ●環境 クライアント側:windows8.1 サーバー側:Linux(CentOS6.0) サーバーソフト:Apache2.2.15