2016-08-11 1 views
-1

Ich habe den folgenden Code in meiner .htaccess-Datei, um Anfragen an PHP-Dateien zu blockieren und die 404.php-Datei anzuzeigen.PHP-Dateien in Unterverzeichnisse umschreiben

RewriteCond %{REQUEST_URI} !(index|backup).php 
RewriteCond %{REQUEST_URI} !^\/(dir1|dir1)\/ 
RewriteCond %{REQUEST_URI} !404.php 
RewriteCond %{REQUEST_URI} .*\.php 
RewriteRule .* 404.php [L] 

Dies blockiert Anforderungen an alle PHP-Dateien mit Ausnahme von index.php, backup.php und alle Dateien in dir1 und dir2. Dies funktioniert für Anfragen an der Wurzel:

http://www.example.com/some-file.php 
http://www.example.com/another-file.php 

Aber es funktioniert nicht für Dateien in Unterverzeichnissen:

http://www.example.com/sub/some-file.php 
http://www.example.com/sub/another-file.php 

soll ich sagen, dass das Unterverzeichnis ‚sub‘ nicht wirklich existieren. Die Anfragen kommen von automatisierten Scannern, die nach Löchern in der Site suchen. Ich überschreibe die Anfragen zu 404.php, weil diese Datei die Datenbank oder irgendwelche der Anwendung nicht lädt. Wenn ich das nicht mache, wird stattdessen die vollständige Anwendung 404 geladen, was MySQL immer wieder zum Absturz bringt, wenn ich 100 dieser Anfragen pro Minute bekomme (mehrmals am Tag).

Meine Frage ist dann, wie kann ich den Code ändern, um für Unterverzeichnisse zu arbeiten? Ich dachte, dass die REQUEST_URI das vollständige Unterverzeichnis enthielt, damit der Code so funktionieren sollte wie er ist?

Antwort

-1

Sie könnten eine separate RewriteRule haben, die nur Zugang zu sub bestreitet, stellen diese vor Ihrer anderen Regeln und es wird nur 403 die Anforderung und Stoppverarbeitung:

RewriteCond %{REQUEST_URI} ^/(sub.*|othersub.*)$ 
RewriteRule .* - [F] 

Ich würde so eine separate Liste halten leugnen, weil Leute, die nach Exploits fischen, in die 403-Kategorie fallen, während ein echter Fehler bei der Suche nach einer potenziell gültigen URL eher ein 404 ist.

+0

Dies funktioniert nicht, da die Verzeichnisse nicht wirklich existieren und alles so sein kann wie sie werden über automatisierte Exploit-Scanner angefordert. Ich habe keine spezifische Liste von zu blockierenden Verzeichnissen. Es ist für mich kein Problem, alle .php-Dateien zu blockieren, da die einzige gültige PHP-Datei auf dem Server index.php ist, die mit dieser Regel erlaubt ist. –