PHP Webseite zeigt PHP-Code an

Überkinger

Lieutenant
Registriert
Juli 2010
Beiträge
600
Hallo, ich ziehe mit meiner Webseite um. Nun funktionieren die PHP-Scripte nicht mehr.

Komisch ist, dass sie im Browser (Page-Source) die Scripte nun sichtbar sind, inkl. Passwörtern für Datenbank. Wie kann ich das beheben?
 
In den du PHP aktivierst. Bzw. ein Paket buchst das PHP beinhaltet
 
Ist denn PHP beim Webspace dabei? Möglicherweise müsstest Du PHP in der htaccess aktivieren, oder in der Admin-Konsole des Providers aktivieren.
 
Oder deine Dateien haben ne Endung (.html oder sowas), die nicht automatisch durch den PHP parser laufen. Dann musst du das wieder einstellen.
 
Oder du hast irgendein Tag nicht geschlossen, was man aber ausschließen kann wenn du die Dateien nicht bearbeitet hast.
 
Oder du solltest deine DB-Passwörter nicht in den Sourcecode schreiben.
 
PHP:
<?php echo "test";?>
klappt, also ist php aktiv.
 
asdfman schrieb:
Oder du solltest deine DB-Passwörter nicht in den Sourcecode schreiben.

Ähm... wie willst du es sonst machen? Irgendwo MUSS das PW für die Datenbank stehen, und zwar im Reintext, nicht als Hash.
Man schreibt so etwas nur eben nicht gerade in die index.php sondern inkludiert von der index.php aus eine config.php... oder geht gleich über ein Framework, dass sich um sowas kümmert.

Zum Problem:
Hast du evtl. "index.php?-s" aufgerufen? Du hast soeben einen Webserver erwischt, der PHP im CGI - Modus betreibt noch nicht auf PHP 5.3.14 bzw. 5.4.3 gepatched wurde.
Evtl. ist es auch ein obskures Rechte-Problem.
 
Die Frameworks packen solche Sachen aber auch in den PHP-Code. Zwar, wie bereits gesagt, nicht index.php, sondern config.php, die vom Apache einfach niemals ausgeliefert wird, sondern nur dem PHP-Parser zugänglich ist.
 
asdfman schrieb:
Oder du solltest deine DB-Passwörter nicht in den Sourcecode schreiben.
Bin mal gespannt, wie Du es sonst machen möchtest. In eine Datei, diese über htaccess schützen und dann auslesen?
 
Wenn PHP keine Möglichkeit dazu bietet, sollte man am besten auf eine andere Sprache ausweichen.
Selbst mein Pupsi Blog in CGI mit C kann aus /etc/ lesen, was vom Webroot nicht erreichbar ist (und
damit auch nicht vom Webserver ausgespuckt werden kann).
 
Zuletzt bearbeitet:
Man KÖNNTE in PHP genauso unter /etc eine "example.com.ini" anlegen und auslesen. Macht nur keiner, weil dann die Seite schon mal zwingend an einen Linux-Server gebunden wäre. Es gibt aber tatsächlich Leute, die PHP auf IIS laufen haben....

Viel cleverer ist es, den Quellcode einfach mit ner .htaccess zu schützen. Ins Webroot kommt die index.php, die dann aus nem Unterordner, z.B. config, eine config.php inkludiert. Include umgeht .htaccess, aber es gibt keinen Weg, per HTTP-Request auf die config/config.php zuzugreifen. Da kriegt man sofort n FORBIDDEN um die Ohren.
Dieser Weg kann gar nicht so falsch sein, schließlich arbeiten alle von mir mal näher angeguckten PHP-basierten Open Source CMS und Shopsysteme auf diese Weise. Auch das ZEND-Framework und Symphony arbeiten nicht wirklich anders. Bei allen ist irgendwo eine Config-File, die per Include geladen wird.

So, und jetzt hast du wieder was gelernt. Beim nächsten Mal erklär ich dir, warum man das Rad nicht neu erfindet und wieso kompilierter C-Code nicht nennenswert schneller ist als PHP im FastCGI-Modus, dafür natürlich viel ekliger zu warten.
 
Ich glaube, ihr wollt mich hier absichtlich falsch verstehen. Wenn man die Passwörter so ablegen kann, dass
sie von einem User nicht gesehen werden können, selbst wenn der Webserver falsch konfiguriert ist, so
dass der Sourcecode ausgegeben wird, ist doch alles fein.

Sensible Daten allerdings direkt in das Skript zu schreiben, hardgecodet, ist nicht nur schlechter Stil, sondern
auch aus Sicherheitssicht Bullshit. Habe ich gesagt "Du sollst deine Passwörter nicht in eine Konfigurations-
datei schreiben, die der User nicht sehen kann"? Nein. Ich sagte sogar später, OP soll genau das tun. Ob die
gemeinte Konfigurationsdatei jetzt in /etc liegt, oder einem anderen Verzeichnis, das für den User nicht zu
sehen ist, ist doch völlig wumpe. Hier hätte man eigentlich von einem Mittelstufenschüler schon eine ent-
sprechende Transferleistung erwarten können. (Von einem speziellen Beispiel auf den allgemeinen Fall zu
schließen ist doch eine Minimalkompetenz, die man fürs Programmieren benötigt, dachte ich)

Und sagte ich irgendwo, C sei schneller oder sonstwie besser? Im Thread dazu habe ich sogar geschrieben,
dass ich das nie gemacht hätte, wenn mich nicht jemand quasi dazu angestachelt hätte, ihm zu beweisen,
dass es ohne Probleme möglich ist und gar nicht so schwer, eine Webapplikation in C zu schreiben.

€: Und selbstverständlich erfindet man das Rad neu. Gerade in der Softwareentwicklung macht man das die
ganze Zeit. Sonst gäbe es nur ein Betriebssystem, nur eine Programmiersprache, nur einen Webserver, nur
einen Texteditor undsoweiterundsofort.
 
Zuletzt bearbeitet:
z.B. insofern, dass OP erfährt, wie er in Zukunft gelassener mit so einer Situation umgehen kann. PHP Source
sehen zu können ist nicht das Drama. Passwörter schon. Dahingehend finde ich diese Diskussion erstens sehr
relevant und zweitens bin ich nicht der Diener des OP und wenn eine Diskussion in einem Thread mal in eine
andere Richtung abdriften sollte, ist das völlig legitim. Das ist hier doch ein Diskussionsforum und kein haltet-
euch-strikt-daran-was-der-OP-will Forum, oder?
 
Zurück
Oben