Ich habe ein "globabVars.php" -Doc in meinem eigenen kleinen Framework, das Datenbankverbindungs-Vars usw. enthält. Ich denke, dass es nett wäre, außerhalb der Web-Verzeichnisse zu speichern, um es ein wenig sicherer zu halten . Aber dann dachte ich, ist es wirklich
Gedanken?
Wenn Sie eine Konfigurationsdatei außerhalb des Webstammverzeichnisses verschieben, kann diese Datei daran gehindert werden, durchzusickern, wenn Sie versehentlich Apache falsch konfigurieren. Wenn Sie zum Beispiel Apache mod_php
entfernen, werden alle .php-Dateien als Textdateien behandelt. Ich habe gesehen, dass Konfigurationsdateien aus diesem Grund außerhalb des Webstamms auf Produktivsystemen verschoben wurden, und es hat verhindert, dass die Datei durchgesickert ist! (Ein Admin hat die Konfiguration während eines Updates vereist, Doah!). Obwohl das nicht oft passiert.
Wenn ein Angreifer den Pfad einer dieser Funktionen steuern kann: file_get_contents()
, fopen()
, readfile()
oder fgets()
, dann kann er jede Datei auf Ihrem System lesen. Sie müssen sich auch um die SQL-Injektion kümmern. Zum Beispiel kann diese Abfrage unter MySQL verwendet werden, um Dateien zu lesen: select load_file("/etc/passwd")
.
Um dieses Problem zu beheben, entfernen Sie die FILE
-Rechte von Ihrem von PHP verwendeten MySQL-Benutzerkonto. Führen Sie auch chmod 500 -R /path/to/web/root
aus. Die letzten 2 Nullen verhindern, dass ein anderes Konto auf die Dateien zugreift. Sie sollten es auch mit einem chown www-data -R /path/to/web/root
weiterverfolgen, wobei www-data das Benutzerkonto ist, mit dem php ausgeführt wird. Sie können dies herausfinden, indem Sie <?php system('whoami');?>
ausführen.
Es bedeutet, dass niemand standardmäßig über eine URL darauf zugreifen kann.
Sie können mit .htaccess
ausblenden, wenn in Ihrer Docroot ist, aber das Speichern über der Docroot ist nur ein bisschen sicherer.
Sie können es über PHP lesen lassen, wenn Ihre Anwendung anfällig für Angriffe durch Verzeichnisdurchsuchungen ist.
Ja, du hast Recht. Es gibt einen sehr kleinen Unterschied.