heute mal eine Frage zu PHP. Ich arbeite mit Include-Dateien. Die heißen z.B. inc.header.php damit weiß ich, dass diese Datei eingebunden wird.
Bis jetzt habe ich meine Include-Dateien auch mit im Ordner "html" liegen. Allerdings wenn jemand den Namen kennt, kann er diese direkt aufrufen.
Ob das ein Problem ist, hängt davon ab, was in diesen Dateien drinsteht. Da ihre Namen auf .php enden, werden sie zumindest schon mal nicht als Quelltext ausgegeben, sondern durch den PHP-Interpreter verarbeitet. Es werden also keine Interna (Zugangsdaten für andere Dienste, Dateipfade) ausgeplaudert, im schlimmsten Falle sieht der Neugierige Bruchstücke einer Seite, die er auf "offiziellem" Wege im Ganzen zu sehen bekommen würde. Hast du in den Include-Dateien darüber hinaus lediglich Funktionen stehen, wird im Browser bei ihrem Aufruf gar nichts erscheinen.
Insofern: Enden die Dateien auf .php, stellen sie grundsätzlich kein Sicherheitsrisiko dar.
Daher meine Frage, ist es Sinnvoll die Dateien auch mit in den Unterordner "include" zu legen
Ob sie in einem separaten Ordner liegen, ist, für sich genommen, völlig unerheblich – "seitenteile.inc.php" ist so leicht oder schwer zu (v)erraten wie "include/seitenteile.inc.php". Ein eigener Ordner könnte gar noch problematischer werden, nämlich dann, wenn man dem Webserver erlaubt, das Inhaltsverzeichnis des Ordners auszugeben und damit die Namen sämtlicher internen Dateien.
Aber …
und kann ich irgendwie verhinder, dass diese Dateien direkt aufgerufen werden können?
Beim Apache-Webserver kannst du mittels <FilesMatch>-Block und Deny Dateien nach einem Namensmuster für die Auslieferung sperren. Andere Webserver bieten Ähnliches.
Deine Überlegung, die Dateien in einen eigenen Ordner zu packen, hat in dieser Hinsicht den Vorteil, dass du kurzerhand mit einer Einzeiler-.htaccess den ganzen Ordner per Deny sperren kannst. Das ist wohl die einfachste und sicherste Methode.