Interne Dateien per Browser-Zugriff blockieren

Pfandfinder

Lieutenant
Registriert
Nov. 2020
Beiträge
645
ich nutze für die Datenbank-zugriffe eine extra .php-Datei in einem extra Ordner und die binde ich mittels "include" im Script ein. klar kann man das Zugriffs-Script nicht lesen, aber für den Fall der Fälle dass PHP mal ausfällt und der Login im Klartext steht, will ich das mehr absichern. habe dazu einfach eine .htaccess mit "Deny from all" angelegt. Das scheint auch zu funktionieren. ich habe keinen Zugriff auf den Ordner wo die Datei liegt aber mein PHP-Script kann die Datei weiterhin lesen.

Meint ihr dieser Schutz reicht bereits ?
 
Wenn PHP ausfällt, schickt der Webserver die .php Dateien einfach an den Browser zum Download? Sollte eigentlich eher ein HTTP 500 Fehler geben.
 
Secrets schreibt man üblicherweise nicht in Dateien rein, sondern setzt sie als Umgebungsvariablen auf dem Server.
 
es gab früher mal bei Froxlor früher in einer Version einen bug dass alle Inhalte, auch von php Dateien, einfach als klartext ausgegeben wurden, seit dem bin ich vorsichtig
 
BeBur schrieb:
sondern setzt sie als Umgebungsvariablen auf dem Server
Ist leider unsicherer - ein einfaches phpinfo() reicht, um die Umgebungsvariablen anzuzeigen.

Anmeldedaten sind in PHP-Dateien sicher genug, da diese bei trivial korrekter Konfiguration nicht angezeigt werden - ich kenne keine Webserver, welche PHP-Dateien einfach mal so ausspucken (es sei denn man setzt falsche Code-Tags oder kommt plötzlich auf die Idee .phps-Dateien zu schreiben, ohne diese im Webserver richtig zu registrieren).
 
Phrasendreher schrieb:
Anmeldedaten sind in PHP-Dateien sicher genug, da diese bei trivial korrekter Konfiguration nicht angezeigt werden -
Der Nachteil besteht darin, dass du die Dateien dann nicht mehr in die Versionsverwaltung einpflegen kannst, deswegen macht das soweit ich weiß niemand. Ganz allgemein sollte man auch sowieso Konfiguration und Code voneinander getrennt halten.

Phrasendreher schrieb:
ein einfaches phpinfo() reicht, um die Umgebungsvariablen anzuzeigen
Interessant, ich würde denken das ist php spezifisch. Bei Ruby on Rails gibt es spezifische verschlüsselte Container, wo die credentials eingetragen werden können, d.h. sie liegen entschlüsselt dann nur im RAM. Sowas gibt es gewiss auch für PHP Frameworks.
Als Alternative zu env-variablen gibt es noch gesonderte credential dateien, also ein einzelner Ort wo alle relevanten geheimnisse drin stehen. Das ist dann die eine Datei die man nicht in die versionsverwaltung einpflegt.

Phrasendreher schrieb:
es sei denn man setzt falsche Code-Tags
Also außer man hat einen ungünstigen Bug auf Applikationsebene? ;-)
 
  • Gefällt mir
Reaktionen: Lawnmower
Ein gängiger Trick: Den webroot unterhalb des Application-Ordners zu setzen. Beispiel CakePHP:
Bash:
/cms
  /bin
  /config
  /logs
  /plugins
  /resources
  /src
  /templates
  /tests
  /tmp
  /vendor
  /webroot
  .editorconfig
  .gitignore
  .htaccess
  .travis.yml
  composer.json
  index.php
  phpunit.xml.dist
  README.md
Der Webroot zeigt nach /cms/webroot, darin existiert lediglich eine index.php, welche nach oben inkludiert. Tritt nun ein Konfigurationsfehler auf, liefert der Webserver nur diese index.php aus, in der keine signifikanten Informationen enthalten sind.
 
  • Gefällt mir
Reaktionen: Evolutio, [ChAoZ] und Lawnmower
Zurück
Oben