Können Leute meinen PHP-Code sehen, wenn das Rendering fehlschlägt?

8

Um PHP laufen zu lassen, musste ich Includes auf dem Apache Webserver aktivieren. Niemand kann meine .php Dateien wirklich sehen, denn wenn sie vom Server geholt werden, werden sie gerendert und der Client sieht nur css / html / was auch immer. Es könnte nur meine Neuheit mit PHP hervorheben.

Ist es jemandem möglich, den PHP-Rendering-Teil meines Servers zu unterbrechen, so dass Clients meinen .php-Code sehen können, wenn sie eine Seite anfordern?

Und wenn das passieren kann , welche vorbeugenden Maßnahmen kann ich ergreifen, um sicherzustellen, dass mein kommerzieller Code weiterhin geschlossen bleibt?

Auch dies ist vielleicht nicht einmal ein echtes Problem, aber ich würde es gerne wissen.

    
sova 11.04.2011, 02:41
quelle

6 Antworten

6

Dafür gibt es zwei Möglichkeiten:

  1. Ein falsch konfigurierter Webserver, der keine PHP-Dateien ausführt. Dies hat nichts damit zu tun, dass der Benutzer einen Fehler auslöst.
  2. Ausführen angepasster Debugging-Funktionen, die Fehler mit Code auf dem Bildschirm anzeigen. Wenn Sie beispielsweise ein Framework eines Drittanbieters verwenden, kann dies automatisch erfolgen. Der Benutzer könnte möglicherweise so etwas auslösen.

Um zu verhindern, dass eine dieser Situationen Probleme verursacht:

  • Betten Sie keine vertraulichen Informationen (z. B. Kennwörter) in Ihre Quelldateien ein. Fügen Sie sie stattdessen aus Dateien ein, die außerhalb des Webstamms liegen. Wenn also Ihre Quelle sichtbar wird, kann niemand auf diese privaten Daten zugreifen.

  • Zeigen Sie keine Fehler auf dem Bildschirm in der Produktion an. Ein Datenbankpasswort könnte in der ausgelösten Ausnahme erscheinen.

  • Achten Sie darauf, alle Entwicklungs- / Debug-Einstellungen für die Produktion zu deaktivieren.

Matthew 11.04.2011, 02:54
quelle
7

Wie andere bereits gesagt haben, wird ein falsch konfigurierter Webserver, der .php-Dateien als einfachen Text behandelt, Ihren Quelltext gerne bereitstellen.

Die meisten Frameworks (sowohl öffentliche als auch interne) haben heutzutage jedoch sehr wenig PHP-Code in einem Web-zugänglichen Bereich. In der Regel befindet sich eine einzelne index.php-Datei im Dokumentenstammverzeichnis, die Code in anderen Dateien enthält und aufruft, die sich vollständig außerhalb des Dokumentstammverzeichnisses befinden.

Normalerweise haben Sie so etwas:

%Vor%

Rewrite-Regeln werden normalerweise verwendet, um Anfragen über die eine öffentliche index.php-Datei zu sammeln.

Wenn Ihr Webserver bei einer solchen Konfiguration so falsch konfiguriert wird, dass er Ihren Code überträgt, sind Sie ziemlich abgedeckt. Das einzige Leck wäre Ihre index.php-Datei, die wahrscheinlich ein paar include / require-Anweisungen und einen einzelnen Funktions / Methodenaufruf enthält. Nichts sensitives überhaupt.

Sieh dir das Zend Framework oder das Layout von Symfony (oder irgendein Framework) an, um ein klareres Bild zu bekommen.

    
timdev 11.04.2011 02:57
quelle
4
  

ist es möglich, dass jemand den PHP-Rendering-Teil meines Servers bricht, so dass Clients meinen .php-Code sehen können, wenn sie eine Seite anfordern?

Dies kann nur passieren, wenn die Webserver-Software falsch konfiguriert wurde, um .php -Dateien nicht als PHP zu verarbeiten. Dies kann nicht vom Benutzer ausgelöst werden.

Die wenigen Male, die dies in der Vergangenheit auf Websites mit hohem Bekanntheitsgrad passiert ist, waren Konfigurationsfehler und Tippfehler, wie das richtige Öffnen des <?php -Tags, wodurch der Rest des Codes in dieser einen Datei offengelegt wurde.

    
Charles 11.04.2011 02:49
quelle
1

Nein. PHP-Code auf einer korrekt konfigurierten wird nicht selbst ausgegeben, es sei denn, Sie sagen es zu . (Fehlkonfigurierte Server, die nicht wissen, dass sie .php -Dateien ausführen sollen, werden sie wahrscheinlich nur als Nur-Text ausgeben. In diesem Fall hätten Sie Probleme.)

Sie müssen nur in seltenen Situationen darauf achten - wenn Sie beispielsweise den Inhalt einer Datei abrufen und an den Benutzer ausgeben, können Sie eine Überprüfung hinzufügen, dass die abgerufene Datei nicht Ihre PHP-Datei ist Code.

Aber in 99 der 100 Fälle müssen Sie sich darüber keine Gedanken machen.

    
Jon Gauthier 11.04.2011 02:49
quelle
1

Das ist nicht wirklich normal, aber das Schreiben / Verwenden von unsicherem PHP (und anderer Software für diese Angelegenheit) könnte Löcher hinterlassen. Für PHP ist es wichtig, defensive Programmierung wie Escape-SQL-Abfragen zu verwenden, die alle vom Benutzer bereitgestellten Eingaben enthalten. Strip-Sonderzeichen (htmlentities () hilft, aber ist nicht immer genug) und Sicherheitsdenken in was Sie erlauben Menschen zu geben, die Auswirkungen auf Ihren Code und Datenbanken direkt.

    
Jake 11.04.2011 02:51
quelle
1

Ich würde sagen, es hängt wirklich von der Sicherheit des Servers selbst ab, wenn es anfällig für Angriffe wird, besteht die Möglichkeit, dass auch Ihre Codes kompromittiert werden.

Da PHP auch auf den Server-Einstellungen verfügbar ist, habe ich in der Vergangenheit Leute gesehen, die fragen, warum sie ihren PHP-Code auf der Webseite sehen, der durch die Verwendung des Short-Hand-Tags <? verursacht wird ist standardmäßig nicht für Server aktiviert, die die Anzeige von PHP verursachen.

    
tradyblix 11.04.2011 02:51
quelle