Stef
, tk1234
der Vorteil Dateien außerhalb des Docroots abzulegen ist, niemand kann darauf über die URI zugreifen (//example.com/.../config.php aufzurufen ist quasi nie möglich, //example.com/config.php dagegen viel eher).
Dies hilft bei (Webserver-)Konfigurations & Menschlichen Fehlern Datenleaks zu vermeiden. Natürlich ist das keine Garantie aber eben eine Maßnahme mehr.
Das ganze ist nicht relevant wenn alles richtig konfiguriert ist & keine Fehler passieren, überall die benötigten deny Einträge liegen und directiory indexing ausgeschaltet ist. Wir wissen aber das in der echten Welt fehler passieren und Dinge übersehen werden oder auch Maschinen wie Webserver manchmal nicht mehr so funktionieren wie vorgesehen.
Zum Beispiel:
- In dem Moment wo sich aber z.B. dein Webserver verschluckt und z.B.*.phpdateien nicht mehr über den php parser ausliefert sondern direkt könnten Configurations-Dateien plaintext an den Nutzer augeliefert werden.
- Irgendwelche debug ausgaben mit kritischen Informationen in einer Datei übersehen/vergessen werden, die zwar im normalen einsatz der applikation nicht eingebunden werden, durchaus aber noch über die URL aufrufbar sind
- Ein Fehler in einer von dir genutzen composer dependencie vorliegt der dir nicht bekannt ist, welcher ausgenutzt werden kann, weil die composer dateien über die URL aufrufbar sind
- -- hier kann man noch ne Menge ergänzen, u.A. auch komplizierte Exploits --
tl;dr
Wenn es bei deinem Hoster möglich ist den document root anzupassen, ist das zu empfehlen & nur wirklich öffentliche Dateien (index.php, css, bild und js assets) im public Ordner abzulegen.