web-dev-qa-db-ja.com

閲覧可能PHPウェブサイトのコード?

どういうわけか別のウェブサイトのphpファイル/コードを表示することは可能ですか?

または質問を言い換えると、私のPHPコードはファイルにアクセスできる人を除いて誰でも見ることができますか?

もしそうなら、どうすればこれを防ぐことができますか?

追伸:サーバーOSはUbuntu 9.10で、PHPバージョンは5+(Apache2)

37
user188962

サーバーのバグまたはセキュリティの脆弱性(ApacheまたはPHPエンジン)、または独自のPHPコード)により、攻撃者がコード。

たとえば、PHPスクリプトを使用して、人々がファイルをダウンロードできるようにし、攻撃者がこのスクリプトをだましてPHPファイルをダウンロードし、コードが漏洩する可能性があります。

使用しているソフトウェアからすべてのバグを排除することは不可能であるため、誰かreallyがコードを盗もうとし、十分なリソースがある場合、彼らができる合理的なチャンス。

ただし、サーバーを最新の状態に保つ限り、コードに明らかなセキュリティ上の脆弱性がない限り、さりげない関心を持つ人はPHPソースを見ることができません。

コードを安全に保つための出発点として、 PHP manual のセキュリティセクションを読んでください。

43
Artelius

エクスプロイトを使用するか、不適切に構成されたサーバーで、PHPソースをダウンロードできます。ただし、Zend Guard、Ioncube、または同様のアプリを使用して)コードを難読化および/または暗号化できますソースが読めないことを確認したい(正確には、十分な時間/リソースがあれば難読化自体を元に戻すことができますが、IonCubeまたはZend Guardの復号化ツールはまだ見つかりません...)。

1
wimvds

ファイルにアクセスできる人を除いて、誰もファイルを読むことができません。 Webサーバーでコードを読み取り可能(ただし、書き込み不可)にする必要があります。 PHPコードハンドラーが正常に実行されている場合、Webサーバーから名前で要求して読み取ることはできません。

誰かがあなたのサーバーを危険にさらすならば、あなたは危険にさらされています。 Webサーバーが絶対に必要な場所にのみ書き込みできることを確認してください。/varの下には、ディストリビューションによって適切に構成する必要がある場所がいくつかあります。 Webからアクセスできないようにする必要があります。/var/wwwは書き込み可能ではありませんが、動的コンテンツのためにWebサーバーによって書き込まれたサブディレクトリを含むことができます。これらの場合、コードハンドラーを無効にする必要があります。

あなたのPHPコードでコードインジェクションにつながる可能性のあることは何もしないでください。もう1つのリスクは、..を含むパスまたは/で始まるパスを使用したディレクトリトラバーサルです。 Apacheは、パスを処理しているときにこれを防ぐために既にパッチを適用する必要があります。ただし、phpなどのコードを実行する場合、パスは制御されません。 Webクライアントがファイルパスを渡すことができるものは避けてください。

0
BillThor