PHPで作られた

<?php
?>
部分は、WEBにアップしたら、閲覧者にソースなどからは絶対に見られることはありませんか?
例えば、属性の数値の変更などによっては見ることができてしまったりするのでしょうか?

回答の条件
  • 1人5回まで
  • 登録:2007/05/30 16:20:01
  • 終了:2007/06/06 16:35:37

回答(4件)

id:co3k No.1

海老原昂輔回答回数7ベストアンサー獲得回数02007/05/30 16:23:30

ポイント23pt

.phpをPHPとして実行することができない状態(apacheの設定など)であればソースコードを見られてしまうと思います。

id:minomino13

ありがとうございます。

PHPとして実行できればソースコードは見られてしまう危険性は無いということでしょうか?

2007/05/30 18:38:06
id:hsada No.2

hsada回答回数48ベストアンサー獲得回数12007/05/30 16:26:51

ポイント23pt

http://www.phpweb.jp/manual/manual06.php

実行権限が与えられていなかったり、WEBサーバーの設定でPHPを実行しないように設定した場合、単純なTEXTファイルとして表示します。

id:minomino13

ありがとうございます。

やはり属性(パーミッション)は644ではなく、705などに変えるのは常識なのでしょうか?それによる弊害はありますか?

2007/05/30 18:38:57
id:haniwa91 No.3

haniwa91回答回数5ベストアンサー獲得回数02007/05/31 12:04:52

ポイント22pt

重複になりますが・・・

「PHPとして実行されればソースコードは見られない」

これは正しいです。逆に設定などにより実行されなかった場合に危険があります。

またありがちなミスとしてrequireなどで利用するファイルを「subfile.inc」のような名前にしていると

直接ファイル名を指定された場合にPHPとして実行されず中身が見えてしまうケースがあります。

もうすこしこみいったケースでは外部ファイルの読み込みを動的に行っているプログラムを悪用されるケースがあります。


$file = $_GET['head']; // "default.html" のようなパラメータが欲しい

$header = file_get_contents($file);

echo $header;

?>


上記のコードの場合、headパラメータに「config.php」のような名前を与えてPHPファイルが読み出されてしまいますね。

id:minomino13

ありがとうございます。

場合にもよるようですが、基本的に「PHPがPHPとして実行されていればソースコードは見られない」という考えで合っていますかね?

2007/05/31 22:00:44
id:Yota No.4

Yota回答回数453ベストアンサー獲得回数282007/05/31 17:19:53

ポイント22pt

上の回答とかぶりますが、ApacheのモジュールとしてPHPを走らせるなら、httpd.confに下のように書けば、.phpのファイルはPHPのパーサに渡されるため、テキストファイルとしては吐き出されません。

AddType application/x-httpd-php .php

しかし、何かの手違いやクラッカの腕が上手であるために、見られる可能性がないとはいえないでしょう。そこで、念のためパスワードなどの設定ファイルは非公開ディレクトリにおいておいてrequire_once('')で呼び出す、といった対策をする場合が多いようです。

話はそれますが、

error_reporting = E_ALL & ~E_NOTICE

という設定にしてあるため、エラーや警告でスクリプトに何が書いてあるが推測できるサイトは結構世の中にあります。

それとわざわざPHPスクリプトであるということを宣伝する必要もないので

AddType application/x-httpd-php .asp

とか書いておいて、.aspでファイルを作るせこいセキュリティ対策もあります。

id:minomino13

ありがとうございます。

2007/05/31 22:00:55

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません