• ベストアンサー

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に関してもセキュリティ対策は必要でしょうか。 もし必要な場合は、必要な対策内容を教えてください。 以上お時間とりますが、何卒宜しくお願いします。

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

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

《ANo.1の続きです》 > localhostに接続する際にも、 > XSSやSQL Injectionの被害を受けることはあるのでしょうか。  : > htdocs内で単純に作ったスクリプトにも、 > 気を配らないといけなくてはならなく面倒だなと。 確かにそのとおりですが、私のことを言ってしまえば、 localhostのセキュリティ対策はあまり考えていませんし、テストで書いた コードも置きっぱなしにしています。 可能性はありますけれど、そこまで神経質にならなくていいかなー、 と私は思います。ほかの方のご意見があったら、聞いてみたいですね。 LANケーブルを抜いておくとか、パーソナルファイアウォールを動かして Webサーバーへのアクセスを遮断しておけば、自分以外はアクセスしてきませんよね。 (一方で、こういう安心の裏にセキュリティ被害があるわけですが) ただ、セキュリティ対策の本質というのは、決められた項目を守るとかいう マニュアル主義的なものではなく、常に注意を配って被害を未然に防ぐとか 被害が出てもすぐ回復できる体制を整える、とかいうものだと理解しています。 投入できる時間やエネルギーと相談して、localhostのセキュリティにも 気を配るか、あるいは万一SQLインジェクションされて被害が出ても、 すぐ回復できるようにバックアップしておくとかでしょうか。

miraikuru
質問者

お礼

gfct9sさん 素早い対応ありがとうございます。 なるほど、 たしかに神経質になる必要はないですよね。 WEBにアップしているスクリプトと同じものでも、 パスワードなどを変えたりするなどの配慮を行えば、 致命的な被害には合わないと思いますし。 念のため、アドバイス頂いたとおり、 バックアップには注意しておきます。 他の人の意見もあるかも知れないので、 しばらく回答は締め切りませんが、 gfct9sさんのご対応には敬服しました。 私も、もっとプログラムの技術を向上させて、 いつかgfct9sさんの様に、誰かの助けになれるように頑張ります。 また何かある際は、宜しくお願い致します。 心ある対応、本当にありがとうございました。

その他の回答 (2)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.3

>localhostに接続 ローカルといえどサーバーアプリを起動したまま、ネットにも繋がっていると そのパソコンのIPアドレスが外部から解ってしまうと http://数値IPアドレス/ みたいなurlで外からアクセスできてしまうので、テスト用のセキュリティ不十分なプログラムが実行されてしまう、と言うところが問題になるかと思います。 ということで、No2回答でも書かれていますが、 ローカルサーバーを実行する時は、ネットワーク回路を外す。さらには、自己IP以外からのアクセスを弾くようにしておく。 ネットワークに繋げる時は、テスト用サーバーは終了しておく。 といった注意をしておけば、あとは、ファイアーウォールとウイルス対策の方に気を付けていればよいかと思います。

miraikuru
質問者

補足

hrm_mmmさん コメントありがとうございます。 なるほど、locahost環境でも気をつける必要はあるんですね。 そこでアドバイスを基に、 次のセキュリティ対策を考えました。 いずれもlocalhost環境での対策になります。 少々長いですが、 博識あるhrm_mmmさんでしたら、 簡単にご理解いただけるかと思います。 (1)php.iniの設定変更 「PHPサイバーテロの技法」p212を参照 http://www.amazon.co.jp/gp/product/4883374718/sr=11-1/qid=1164952057/ref=sr_11_1/503-4091124-2745559 php.iniの設定変更内容 allow_url_fopen=on → off ;session_use_only_cookies=1 → ;を削除 (2).htaccessの作成 アドバイス頂いた、 「自己IP以外からのアクセスを弾く」を実現するために作成しました。 参照url http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/ http://httpd.apache.org/docs/2.1/ja/howto/htaccess.html ※url2番目からも、.htaccessの作成はよろしくないようです。 もしphp.iniで作成可能でしたら、 コードを教えて頂けますと大変助かります。 .htaccessの内容 AddHandler php-script .php Order deny,allow Deny from All Allow from localhost 127.0.0.1 対策は以上ですが、もう一つ問題があります。 まだPHP初心者である私は、 ネットワークに繋いで調査を行いながらでないと、 スクリプトの作成が難しい状態です。 作業効率面から、できればネットワークを維持して、 localhostを繋ぎたいのですが、 それでも回路を外したほうがいいでしょうか? 上記の私が行った対策と合わせて、 何かアドバイス頂ければ幸いです。 今回のご対応、心から感謝しております。

  • 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

専門家に質問してみよう