Eine beliebte Sicherheitslücke ist es leider immer noch, Kennwörter von Webanwendungen im Dateien im DocumentRoot abzulegen, die öffentlich abrufbar sind.
Zum Beispiel die Datei /config.yml
password: myscret
Es gibt ein paar Gegenmittel:
-
Die Datei z.B. .htconfig.yml zu nennen, da der bekannte Apache-Webserver diese Dateien standardmäßig nicht anzeigt.
-
Oder im Apache-Webserver eine Regel einzubauen, die config.yml nicht ausgibt, z.B. so
<Files ~ ".yml$"> Order allow,deny Deny from all </Files>
Diese Angaben kann man auch in eine .htaccess
packen.
Aber was ist, wenn der Apache performanceoptimiert ist und die .htaccess
garnicht berücksichtigt? Oder zum NGinx gewechselt wird? Dann stehen die Kennwörter plötzlich frei im Netz
Besser
Eine geschicktere Möglichkeit ist, die Datei als PHP-Datei config.yml.php
zu tarnen, dann wird diese durch den PHP-Interpreter ausgeführt und ein Status 403 erzeugt:
# vim: filetype=yaml
# <?php http_send_status(403); ?>
password: myscret
Danke vim-modeline wird die Datei von vim immer noch als YAML-Datei erkannt ...
Noch besser
Am besten ist es natürlich, die Konfigurationsdatei gleich außerhalb des DocumentRoot abzulegen, sofern das möglich ist. Hier besteht keine Möglichkeit mehr, die Datei irrtümlich abrufbar zu machen.