• ベストアンサー

PHPファイルの中身が見られることはありませんか?

かなり初歩的な質問かもしれませんが、宜しくお願いします。 普通、PHPファイルの中身はブラウザでは表示されないと思うのですが、 それは絶対に表示されないものなのでしょうか? それとも何らかの方法で見られてしまうことがあるのでしょうか? パスワードなどの重要な情報を変数に格納しなければならない場合、 そのファイルを.htaccessで制御したりした方が良いのでしょうか…?

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

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.5

再び No2です >あとこれは.incではなく.phpでも良いのでしょうか? >.inc拡張子にしてから.htaccessで設定する特別な理由があるのでしょうか? >ただ単に.phpに.htaccess設定する必要は無いからということでしょうか? 御幣を与えてしまったようですね .htaccessで設定するのは、.incファイルをFTPする前です (まぁ、すぐに設定すれば後でもかまわないんですけど、タイミング的に、あなたが設定するまでの一瞬の間にアクセスされない保証はどこにもありませんからね・・・) .phpの拡張子は、外部から閲覧するためには、外部からのアクセスを許可しなくてはいけないので、設定するためには、ファイル名+.php をいちいち .htaccess に記述しなくてはいけなくなり、面倒ですし間違いも起こりえます ですから、一番最初にFTP作業前に .htaccessに .incの拡張子すべてをアクセス拒否 と記述しておけば、その後は.htaccessを書き直す必要ないですからね たとえば、.htaccessに <Files ~ "\.(inc|txt|dat)$"> deny from all </Files> と記述しておけば、.inc .txt .dat の拡張子を持つファイルすべてを、外部から(ブラウザ経由で)直接閲覧不可にできます この中に.phpを入れてしまったら、ブラウザ経由で.phpをアクセスできなくなってしまうので、誰もあなたのサイトを見ることができなくなります .inc 外部から直接アクセスしてほしくない、設定ファイルやクラスのみを記述したPHPファイルを.incにしておいてアクセスを禁止する 例) common.inc class.inc config.inc 等 .php 外部からアクセスしてほしいphpファイルに対して付ける 例) index.php 等

fdouble
質問者

お礼

>.phpの拡張子は、外部から閲覧するためには、外部からのアクセスを許可しなくてはいけないので、設定するためには、ファイル名+.php をいちいち .htaccess に記述しなくてはいけなくなり、面倒ですし間違いも起こりえます なるほど!その通りですね。 .incを見せないファイル、.phpを見せるファイル、というようにしてしまえば、ずっと分かり易く楽ですね。 今まで.htaccessに <Files ~ "\.(log|dat|csv)$"> deny from all </Files> (↑解説サイトによくあるサンプル) <Files ~ "^○○\.php$"> deny from all </Files> と設定していましたが、 ○○.php→○○.incにして、 <Files ~ "\.(log|dat|csv|inc)$"> deny from all </Files> にしたほうが断然スマートでいいですよね。 再度回答をありがとうございました。

その他の回答 (4)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.4

HTTPからは見られませんが、FTPから見られる可能性はあります。 通常は気にしなくてもいいレベルの話です。

fdouble
質問者

お礼

ありがとうございます。 HTTPからは見られない、気にしなくていいレベルと聞いて少し安心できました。 神経質になりすぎずも、セキュリティに気を配っていきたいと思います。

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.3

No2訂正です foam じゃなくて、 formですね m(__)m

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.2

phpが動くサーバーであれば 拡張子を、.phpにしておけば まず間違いなく見られることはありません 外部から直接アクセスされたくないphpファイルの場合は、拡張子を.inc 等にして .htaccess で.incの拡張子をもつファイルを外部から見られないように設定してあげればなお良いです サーバーによっては標準設定で ,inc拡張子のファイルには外部から直接アクセスできないようにしている所もあります。 ただし、あなたのソースの書き方によっては意図しないエラー表示が出て、そこから推測されてしまう可能性もあります インジェクションやXSS等の対策を施しましょう また、せっかく外部から見られないようにしているにもかかわらず、(HTMLの)<foam>等でパスワード等の大切な情報をhiddenで渡すようなバカな事しないでくださいね

fdouble
質問者

お礼

inu2さん回答ありがとうございます。 >phpが動くサーバーであれば >拡張子を、.phpにしておけば まず間違いなく見られることはありません ふむふむ、そうですよね。 ただ、cgiファイルの中身が表示されてしまったという原因不明の事例があったので (http://sb.xrea.com/archive/index.php/t-9162.html) もしapacheの異常動作などでスクリプトファイルが表示されてしまうようなことがあっても .htaccessしておけば安心かななんて思ったりしました。 >外部から直接アクセスされたくないphpファイルの場合は、拡張子を.inc 等にして .htaccess で.incの拡張子をもつファイルを外部から見られないように設定してあげればなお良いです なるほど。 参考書に『.incはブラウザで見られる可能性があるからおすすめしない』というようなことが書いてあったので 今まではとにかく全て.phpでやっておこうって感じだったのですが、inu2さんが仰るようにする場合は良いですね。 あとこれは.incではなく.phpでも良いのでしょうか? .inc拡張子にしてから.htaccessで設定する特別な理由があるのでしょうか? ただ単に.phpに.htaccess設定する必要は無いからということでしょうか? >ただし、あなたのソースの書き方によっては意図しないエラー表示が出て、そこから推測されてしまう可能性もあります >インジェクションやXSS等の対策を施しましょう はい、インジェクションやXSS等の対策…聞きなれない言葉です…ちゃんと勉強しなければいけないですね。 >また、せっかく外部から見られないようにしているにもかかわらず、(HTMLの)<foam>等でパスワード等の大切な情報をhiddenで渡すようなバカな事しないでくださいね ページ間での情報の受け渡しはセッションを使う…で正解でしょうか。 というかそれしか思いつかなくてその方法をとっています…こちらも勉強が必要ですね。

回答No.1

.htaccessは、私はいじらなくてもいいとは思いますが。 初心者は、取り合えず、クロスサイトスクリプティングを検索しましょう。

fdouble
質問者

お礼

クロスサイトスクリプティング、耳にしたことがあるくらいでしたが 今回私が質問したようなことにも関係することだったのですね。 早速勉強し始めようと思います。 アドバイスありがとうございました。

関連するQ&A