![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
phpファイル(xxx.php)の<?php ?>で囲われた部分は、外部から読み取られる事は絶対に出来ないのでしょうか?
データベースなどの設定(HOST名、データベース名、データベースパスワード)をドキュメントルート内のphpファイルのデータベースクラスに直接記述しています。
これって安全ですか?
一部の参考書等では、重要な設定等は、ドキュメントルートの外にファイルを置いておいて、インクルードする方法が書かれています。
phpファイル(xxx.php)の<?php ?>で囲われた部分が、絶対に外部から読み取られないのであれば、現状のまま運用しようと思っていますが、ご教授下さい。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?e8efa67)
No.3ベストアンサー
- 回答日時:
ソースコードが見えてしまうケースは、以下のようなものが考えられます。
1.Webサーバの設定ミス
設定変更時などにミスをすることはあります。
2.バックアップファイル
foo.php~ や foo.php.bak などをアップしてしまう。
3.Webサーバの脆弱性
昔、ApacheなどでJSPのソースコードが見えてしまう脆弱性が
何度か発見されました(PHPの事例は知りませんが)。
用心のためにドキュメントルート外に置くのは、良い習慣だと思います。運用ミスや脆弱性などがあると、ドキュメントルート外に置いても絶対安全とは言えませんけれども、外に置いた方が危険性は少ないと思います。
>データベースなどの設定(HOST名、データベース名、データベースパスワード)をドキュメントルート内のphpファイルのデータベースクラスに直接記述しています。
ソースコードが外から見えるか、という問題とは別に、このようなことは余りよろしくないと思います。
まず、データベースクラスをドキュメントルート内に置く必要は無いですよね。また、データベースクラスに直接設定を記述すると、本番環境と開発環境のプログラムが別になり、保守が面倒になります。面倒というのは、ミスしやすいということです。従って、設定情報は設定ファイルなどに記述した方がよいでしょう。そうすると、本番環境と開発環境の違いを、設定ファイルに封じ込めることができます。
回答ありがとうございます。
具体的な例をあげて頂いたので、とても参考になりました。
絶対ではないという事がよく分かりました。
環境等による影響を受けてしまう可能性がある以上、やはりプログラム側で出来る対策は打っておくべきですね。
ありがとうございました。
No.4
- 回答日時:
ソースコードをコンパイルしておくことで
人間にはほぼ解析不可能にすることはできると思います。
例えばこんな商品もあります。
http://www.asial.co.jp/ioncube/
PHPはインタープリンタ型言語ですから
随時、コードをインタープリンタが解析、実行ファイル化、実行
を繰り返すわけですが、
コンパイル済みのファイルですと、逆アセンブル等をかけなければ
ソースコードの実行内容を把握されません。
ご参考までに。
回答ありがとうございます。
PHPにこんな方法があったのですね、初めて知りました。
javaの.classファイルみたいな感じでしょうか
教えて頂いたサイトを見させて頂きました。
ライセンスが結構高いのが残念ですね。
その内フリーで提供されないでしょうか・・・
参考になりましたありがとうございます。
No.2
- 回答日時:
PHPファイルがリクエストされるたびに実行し、その結果のみを返すのでPHPがインストールされているサーバであれば読み取られることはありません。
ですが万が一のことを考えるとドキュメントルート外に置いた方がより安全ですね。
絶対とは言い切れませんが、基本的に<?php~?>内に書いても問題ないです。
回答ありがとうございます。
経験者の方の、お話を聞けてひとまず安心です。
環境等における影響を除いて、PHP言語だけを注目した場合、基本的に<?php ?>内は読み取られる可能性が低い事が分かりました。
ただ、万が一があるという事も・・・
確かにどのプログラミング言語そのものにも、脆弱性があり絶対という事は、まず無いと考えるのが無難なのでしょう。
やはり、総てを理解出来なくても、知りうる対策はこうじるべきなのですね。
ありがとうございました。
No.1
- 回答日時:
私はPHPの言語仕様について詳しくないので、
<?php ?>の中身が外部から読み取れるかどうかについてはお答えできません。
ただ、もし私が「安全かどうか」と聞かれたら、「安全ではない」と答えるでしょう。
例えば、サーバの設定ミスなどで、一般ユーザからPHPファイルのあるディレクトリにアクセスし、
PHPファイルそのものを取得できてしまったらどうでしょうか?
もちろん、これはサーバ管理上の問題であり、プログラマにはどうしようもないかもしれません。
しかし、PHPファイルに設定情報をベタ書きしていたプログラマに問題はない、
と言い切れるでしょうか?
少なくとも、root権限でしか読み取れない場所に設定情報を退避しておけば、
このケースでは、設定情報が読み取られることはなかったはずです。
プログラマの過失によりセキュリティレベルを1段階下げてしまったことになります。
しかも質問者さんは、その退避方法をご存知なようですので、そうなると、
「プログラマの怠慢だ」と言われても仕方ないかもしれません。
できる限り、より安全な方法を取る方がいいでしょう。
とまあ、偉そうに書いてしまいました。
「そう言うお前はどうなんだ?」と聞かれたら、返答に困ってしまいますが・・・
セキュリティなどは十二分に対策しておいた方がいいはずです。
自分の思いもしなかった所に弱点は潜んでいるものですし。
できる限り品質のよいものを作れた方が良いと思いませんか?
回答ありがとうございます。
おっしゃる通りだと思います。
プログラマとして出来る限りのセキュリティ対策をしておくべきだと思います。
ただ、本質を知らずに参考書通りの対策をこうじたとしても、それは根本的なセキュリティ対策といえない事から、今回の質問をさせて頂きました。
私なりに考えられる手段で、ドキュメントルート上のPHPファイルを読み取ろうとしたのですが、出来ませんでした。
参考書では読み取られる可能性を示唆しているような事が書かれていたので、実際にそのような方法があるのか、今後のセキュリティ対策を考える面で知っておきたかったのです。
もしご存知の方がいらっしゃるようでしたら、読み取り方法は書かなくて結構ですので、読み取れるか、読み取れないかだけでも教えて頂けると助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
URLが.PHPってどういう...
-
.phpファイルが、表示されない
-
【file_exists】ファイルが存在...
-
PHPファイルの中身が見られるこ...
-
PHPでフォルダ選択ダイアログを...
-
Fatal error: Class 'Config' n...
-
【PHP】絶対パスで読み込みたい...
-
サイトのphpソースコードを表示...
-
php経由のMySQL
-
なぜ空白が?
-
apacheで拡張子を省略してアク...
-
ファイルのアップロード
-
phpでgifアニメかどうかチェッ...
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
トランザクションが原因?DBに...
-
「@$変数」の「@の意味は?」
-
apache・phpが起動しない・・・
-
PHPの設定で、 エラーが発生し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
【file_exists】ファイルが存在...
-
.phpファイルが、表示されない
-
URLが.PHPってどういう...
-
use と requireの違いは?
-
PHPからCronを編集したい
-
HTMLに埋め込んだPHPがうまく出...
-
さくらレンタルサーバーでPHPが...
-
プロパティファイルの読み込み...
-
htmlspecialcharsが機能してい...
-
PHPファイルの中身が見られるこ...
-
サーバ無しでphpを動作させる
-
thtmlファイルとはどんなファイ...
-
phpの書き方
-
PHP+MySQL SQL文を外部ファイル...
-
PHPの慣習的な書き方・組み方に...
-
cakephpで特定ファイル表示(hta...
-
PHPを使ってのサーバ上ファイル...
-
session_start()でwarningが表...
-
fopenでファイルを読み込み、そ...
おすすめ情報