8

PHPを実行するには、ApacheWebサーバーでインクルードを有効にする必要がありました。サーバーによってフェッチされたときにレンダリングされ、クライアントにはcss / html / whateverだけが表示されるため、実際には誰も私の.phpファイルを表示できません。PHPの新しさを際立たせるかもしれません。

クライアントがページを要求したときに私の.phpコードを見ることができるように、誰かが私のサーバーのPHPレンダリング部分を壊す可能性はありますか?

そして、これ発生する可能性がある場合、商用コードをクローズドソースのままにするために実行できる予防策は何ですか?

繰り返しになりますが、これは本当の懸念ではないかもしれませんが、私は知りたいです。

4

6 に答える 6

7

他の人が言っているように、.phpファイルをプレーンテキストとして扱う誤って構成されたWebサーバーは、ソースコードを喜んで提供します。

ただし、最近のほとんどのフレームワーク(パブリックまたは社内の両方)は、Webアクセス可能な領域にPHPコードをほとんど保持していません。通常、ドキュメントルートには単一のindex.phpファイルがあり、ドキュメントルートの完全に外側にある他のファイルのコードを含み、呼び出します。

通常、次のようなものがあります。

/path/to/proj/            <-- your project root
/path/to/proj/application <-- holds most of your appication code
/path/to/proj/lib         <-- third-party libraries go here
/path/to/proj/public      <-- your web server uses this as the document root.
/path/to/proj/public/index.php   <-- single point of entry into your applicaiton.  all requests are routed through here.
/path/to/proj/public/images      <-- static resources, like images, also live under the docroot.

書き換えルールは通常、1つのパブリックindex.phpファイルを介してリクエストをマーシャリングするために使用されます。

このような設定では、Webサーバーがコードを送信するような方法で誤って構成された場合、ほとんどカバーされます。唯一のリークは、index.phpファイルです。これは、おそらくいくつかのinclude / requireステートメントと、単一の関数/メソッド呼び出しです。何も敏感ではありません。

より明確な図については、標準のZend FrameworkまたはSymfony(または実際には任意のフレームワーク)のファイルレイアウトを参照してください。

于 2011-04-11T02:57:11.803 に答える
6

これを行うには2つの方法があります。

  1. PHPファイルを実行しない誤って構成されたWebサーバー。これは、ユーザーがエラーをトリガーすることとは何の関係もありません。
  2. 画面にコードを含むエラーを表示するカスタマイズされたデバッグ機能を実行します。たとえば、サードパーティのフレームワークを使用している場合、それが自動的に行われる場合があります。ユーザーはおそらくこのようなものをトリガーする可能性があります。

これらの状況のいずれかが問題を引き起こすのを防ぐために:

  • ソースファイルに機密情報(パスワードなど)を埋め込まないでください。代わりに、Webルートの外部にあるファイルからそれらを含めてください。したがって、ソースが表示されるようになると、誰もそのプライベートデータにアクセスできなくなります。

  • 本番環境では画面にエラーを表示しないでください。スローされた例外にデータベースパスワードが表示される可能性があります。

  • 本番環境では、開発/デバッグ設定を必ず無効にしてください。

于 2011-04-11T02:54:05.617 に答える
4

クライアントがページを要求したときに私の.phpコードを見ることができるように、誰かが私のサーバーのPHPレンダリング部分を壊す可能性はありますか?

これは、ファイルをPHPとして処理しないようにWebサーバーソフトウェアが誤って構成されている場合にのみ発生する可能性があります。.phpこれを実現するためのユーザートリガー可能な方法はありません。

<?php過去に有名なサイトでこれが発生したことが数回ありましたが、タグを適切に開かず、その1つのファイル内の残りのコードが公開されるなどの設定エラーやタイプミスがありました。

于 2011-04-11T02:49:07.333 に答える
1

いいえ。正しく構成されたPHPコードは、指示しない限り、それ自体を出力しません。(ファイルを実行する必要があることを認識していない誤って構成されたサーバーは、.phpおそらくプレーンテキストとして出力するだけです。この場合、問題が発生します。)

まれな状況でのみこれを監視する必要があります。たとえば、ファイルの内容をフェッチしてユーザーに出力する場合、フェッチするファイルがPHPコードではないことを確認するチェックを追加できます。

しかし、100件中99件では、これについて心配する必要はありません。

于 2011-04-11T02:49:59.993 に答える
1

これは実際には通常の懸念事項ではありませんが、安全でないPHP(およびその他のソフトウェア)を作成/使用すると、穴が残る可能性があります。PHPの場合、ユーザーが提供する入力を含むエスケープSQLクエリのような防御的なプログラミングを使用することが重要です。特殊文字を削除し(htmlentities()は役立ちますが、必ずしも十分ではありません)、コードとデータベースに直接影響するユーザーの入力を許可する際のセキュリティに注意してください。

于 2011-04-11T02:51:07.800 に答える
1

サーバー自体のセキュリティに依存していると思います。攻撃に対して脆弱になった場合、コードも危険にさらされる可能性があります。

<?公開されているPHPについては、サーバー設定にもあります。過去に、デフォルトでは通常は有効になっていない短縮タグを使用したために、PHPコードがWebページに表示される理由を尋ねる人がいます。 PHPを表示させるサーバーに。

于 2011-04-11T02:51:29.960 に答える