6 Stimmen

Gibt es eine Möglichkeit, die Bereitstellung von PHP-Dateien zu verhindern, wenn der PHP-Prozessor offline ist?

Das ist die Frage, von der mein Partner sagte, ich bräuchte sie nicht zu beantworten, also habe ich zum Beweis meines Standpunkts php entfernt und ein Serverproblem simuliert. Und siehe da, der Webserver zeigt den PHP-Quellcode als Download an.

Die Frage ist also, ob es eine Möglichkeit gibt, im Falle einer Serverstörung, eines Fehlers oder eines vorübergehenden Verlusts der Verbindung zu den entsprechenden Modulen usw. die Bereitstellung der Quelle zu verhindern.

3voto

Artefacto Punkte 93200

Die einzige Möglichkeit, den Quellcode preiszugeben, besteht darin, die Serverkonfiguration aus Versehen zu ändern - zum Beispiel, wenn Sie ein mod_php für Apache verwenden und das Modul versehentlich entfernen.

In diesem speziellen Fall können Sie Folgendes tun:

<IfModule php5_module>
   AddHandler php5-script .php
   PHPIniDir "/etc"
</IfModule>
<IfModule !php5_module>
  <FilesMatch "\.php$">
      Order allow,deny
      Deny from all
      Satisfy All
  </FilesMatch>
</IfModule>

2voto

icktoofay Punkte 121675

Legen Sie die PHP-Dateien außerhalb des Dokumentstammsatzes ab und fordern Sie sie dann von den PHP-Dateien innerhalb des Dokumentstammsatzes an. Sie werden immer noch ein bisschen Code wie diesen oder so bekommen, aber das wird ihnen nicht sehr viele Details geben:

require(dirname(dirname(__FILE__))."/real_file.php");

0voto

Hans Punkte 3145

Ich habe ein paar einfache Funktionen geschrieben, um eine URL im MVC-Stil zu analysieren (basierend auf kissmvc.com) und dies ist die einzige php in meinem Dokument Root:

<?php

require '../bootstrap.php';
parse_request();

Wenn also etwas passieren würde, wäre das alles, was man sehen würde. Alles andere wird ab Bootstrap behandelt. Wenn ich wollte, könnte ich die parse_request() auch in bootstrap.php verschieben, aber ich habe es so gemacht, damit ich mein Bootstrap einbinden kann und nicht den ganzen Webseitenkram versende, wenn ich nur auf ein Cron-Skript treffe (und das war, bevor ich von der php_sapi_name() Funktion und Konstante wusste).

Das nützt nichts, wenn Sie eine bestehende Website mit php im docroot haben oder Wordpress usw. verwenden, aber wenn Sie die Möglichkeit haben, verhindert es, dass Ihnen dieses spezielle Problem in den Hintern tritt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X