.htaccess erlaubt weiterhin den Zugriff auf Dateien

Jul 03 2020

Wenn ich verhindern möchte, dass ein zufälliger Benutzer die URL zum Navigieren zu einer Webdatei verwendet, muss ich eine .htaccess-Datei verwenden.

Ich habe meinen Code unten hinzugefügt. Ich habe eine .htaccess-Datei erstellt und in meinem Include-Ordner abgelegt, um zu verhindern, dass Benutzer zu meiner database.php-Datei navigieren und diese lesen.

Befolgen Sie die Anweisungen hier: https://www.plothost.com/kb/how-to-deny-access-to-a-specific-file-on-your-site-via-htaccess/

Natürlich habe ich einige kleine Änderungen vorgenommen.

Hier ist der Code in meiner .htaccess-Datei:

<files database.php>
Order Allow,Deny
Deny from all
</files>

Mit den oben genannten Informationen kann ich weiterhin eine URL direkt zur Datei database.php erstellen. Ich muss das verhindern.

Was mache ich falsch?

Antworten

2 F.Müller Jul 03 2020 at 02:12

Bitte überprüfen Sie Folgendes:

  1. Stellen Sie sicher, dass Ihre .htaccess-Datei wirklich ".htaccess" heißt.
  2. Die .htaccess-Datei muss sich im richtigen Verzeichnis befinden oder der Pfad der Datei muss relativ zur .htaccess-Datei sein.

Ich habe das gerade auf meinem Computer ausgeführt. Der gleiche Code, den Sie verwendet haben. Meine Struktur:

Die Dateien sind identisch. Ich habe den Inhalt in der .htaccess-Datei im Stammverzeichnis auskommentiert. Also jetzt kann ich anrufen localhost:8080/database.phpaber nicht localhost:8080/test/database.php=> Ich bekomme eine Error 403(Zugriff verweigert).

BEARBEITEN

Wie wäre es mit diesem Leitfaden hier? Setup htaccess

Sieht echt aus. Das ist meine Konfiguration. Dem Handbuch zufolge geht es nur darum, diese Konfigurationsdatei einzurichten und neu zu starten.

BEARBEITEN 2

Ich fand heraus, dass die von mir geöffnete httpd.conf nicht die richtige ist. Ich fand die richtige unter:Application/XAMPP/xamppfiles/etc/httpd.conf.

In dieser Datei müssen Sie suchen nach:

# 
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"
<Directory "/Applications/XAMPP/xamppfiles/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/trunk/mod/core.html#options
    # for more information.
    #
    #Options Indexes FollowSymLinks
    # XAMPP
    Options Indexes FollowSymLinks ExecCGI Includes

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    #AllowOverride None
    # since XAMPP 1.4:
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

Hier finden Sie Folgendes:

#AllowOverride None  # this does deactivate .htaccess
# since XAMPP 1.4:
AllowOverride All    # this does activate .htaccess

Zumindest für mich war dies allein verantwortlich für das Umschreiben von .htaccess. Wenn ich AllowOverride None einstelle, wird der .htaccess vollständig ignoriert.

1 anubhava Jul 03 2020 at 02:21

Sie können dies mithilfe einer mod_rewriteRegel im Site-Stammverzeichnis .htaccess tun :

RewriteEngine On

RewriteCond %{THE_REQUEST} /database\.php[?\s/] [NC]
RewriteRule ^ - [F]