Neulich geschah etwas auf meiner Website (s) und es erschreckte mich, und zeigte mir, dass ich einen Sicherheitsfehler in meinem Apache Virtual-Host habe Konfiguration.Sichern Sie meine PHP-Dateien für den Fall, dass das PHP-Modul von Apache nicht funktioniert
Ich benutze php7.0 von DotDeb. Ich war sudo apt-get upgrade
in meinem Debian Jessie, und aus irgendeinem Grund wurde das PHP-Modul von Apache deaktiviert. Das habe ich nicht bemerkt, aber die Folge war, dass alle meine PHP-Dateien auf meiner Website herunterladbar sind! Dies führt zu einem Sicherheitsrisiko, da zum Beispiel meine Datenbankkennwörter für die Besucher meiner Website sichtbar wurden.
Was ist die richtige Konfiguration, die garantiert, dass ein solches Ereignis nicht passieren wird? Zum Beispiel, wie kann ich Apache fehlschlagen, wenn PHP nicht vorhanden ist? Oder irgendeine andere Lösung, die meinen Website-Besuchern meine PHP-Dateien in solch einer Veranstaltung nicht geben wird!
Das Folgende ist meine aktuelle Konfiguration des virtuellen Hosts.
<VirtualHost *:443>
DocumentRoot /web/root/directory
ServerName www.example.com
<IfModule mod_rewrite.c>
RewriteEngine On
</IfModule>
php_admin_flag engine on
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCompression off
SSLCipherSuite AES256+EECDH:AES256+EDH
SSLCertificateFile /path/to/cert.crt
SSLCertificateKeyFile /path/to/key.key
SSLCertificateChainFile /path/to/chain.chn
</VirtualHost>
Bewegen Sie den PHP-Dateien (mit der möglichen Ausnahme von index.php), die außerhalb des Web-Root und dessen Unterordner –
@MarkBaker Es ist eigentlich Wordpress, ich nicht diese Art von Freiheit. –
@TheQuantumPhysicist Sie tun mit der Konfigurationsdatei. Sehen Sie den [Hardening WordPress] (http://codex.wordpress.org/Hardening_WordPress) Artikel im Codex, unter "Securing wp-config.php" - Sie können Ihre wp-config um ein Verzeichnis oberhalb Ihres Web-Root verschieben, also Es ist für Browser nicht zugänglich. Dort finden Sie auch Tricks für htaccess-Konfigurationen, die unabhängig von PHP sind, um andere Probleme zu vermeiden. (Ich stimme zu ServerFault, da es mehr Serverkonfiguration als Programmierung ist.) –