Hier ist das Szenario:
index.php
Im Stammordner befindet sich eine Datei- Es sind einige Dateien enthalten,
index.php
die sich imincludes
Ordner befinden. - 1 andere Datei (
submit.php
) befindet sich im Stammordner für die Formularübermittlungsaktion.
Ich möchte den direkten Benutzerzugriff auf die Dateien im includes
Ordner durch htaccess einschränken. auch für submit.php
. Include funktioniert jedoch für index.php
Dateien. Wenn Benutzer eingeben www.domain.com/includes/somepage.php
, wird dies eingeschränkt (möglicherweise wird auf eine Fehlerseite umgeleitet).
Dies ist eine reine
mod_rewrite
Lösung:Dies zeigt einen verbotenen Fehler an, wenn der URI entweder
/includes/
oder enthält/submit.php
quelle
Es ist möglich, eine Datei-Direktive zu verwenden und den Zugriff auf alle Dateien zu verbieten. Verwenden Sie sie dann erneut, um die Dateien festzulegen, auf die zugegriffen werden kann:
quelle
1 Liner mod_alias-basierte Lösung:
Dies zeigt einen verbotenen Fehler für /folder/file.php an
quelle
^folder
.Wenn ich das richtig verstehe, möchten Sie nur den Zugriff auf den Includes-Ordner verweigern?
Ein .htaccess mit einer Direktive 'DENY FROM ALL' im Includes-Ordner würde den Trick machen.
quelle
Ihr Q besteht aus zwei Teilen: Die Lösungen von Jeroen und Anubhava funktionieren für Teil I - Verweigern des Zugriffs auf / Includes. Anubhava funktioniert auch für Teil II. Ich bevorzuge letzteres, weil ich
DOCROOT/.htaccess
sowieso ein benutze und dies alle diese Kontrolle in einer Datei behält.Was ich jedoch nicht diskutieren wollte, ist das Konzept "Zugang verweigern
submit.php
". Wenn Sie nicht verwenden möchtensubmit.php
warum haben Sie es dann überhaupt in DOCROOT? Ich vermute, dass die Antwort hier lautet, dass Sie es in einigen Formularen als Aktionsziel verwenden und möchten, dass es nur ausgelöst wird, wenn das Formular gesendet wird und nicht direkt, z. B. von einem Spambot.Wenn dies zutrifft, können Sie Anubhavas Teil II nicht verwenden, da dies dazu führt, dass Ihr Formular fehlschlägt. Was Sie hier tun können, ist (i) mit der
.htaccess
Überprüfung, um sicherzustellen, dass der Referrer Ihre eigene Indexseite war:Und (ii) in Ihrem PHP index.php Formulargenerator einige versteckte Felder für einen Zeitstempel und eine Validierung enthalten. Die Validierung könnte beispielsweise die ersten 10 Zeichen eines MD5 des Zeitstempels und ein internes Geheimnis sein. Bei der Verarbeitung der Übermittlung können Sie dann (i) überprüfen, ob der Zeitstempel und die Validierung übereinstimmen, und (ii) der Zeitstempel liegt beispielsweise innerhalb von 15 Minuten nach der aktuellen Zeit.
Auf diese Weise können Sie Spam verhindern, da der einzige praktische Weg, auf dem ein Spammer ein gültiges Zeitstempel / Validierungspaar erhalten kann, darin besteht, ein Formular zu analysieren. Dieser Scrape hat jedoch nur eine Lebensdauer von 15 Minuten.
quelle
Abhängig von möglichen anderen Optionen, die auf einer höheren Ebene festgelegt wurden, müssen Sie möglicherweise Folgendes in Ihre .htaccess-Datei in Ihrem Includes-Verzeichnis einfügen:
Ich bin darauf gestoßen, als das obere Verzeichnis die Basisauthentifizierung einschließlich der Zeile definiert hat:
Dies verhinderte, dass meine Ablehnung wirksam wurde, da die Benutzer authentifiziert wurden.
quelle
Sie können der
.htaccess
Datei den folgenden Befehl hinzufügenIm Falle eines nicht autorisierten Zugriffs wird die Meldung "Nichts ist hier" angezeigt.
Wenn Sie durch einen Fehlercode auf eine bestimmte Seite umleiten möchten, können Sie einen Befehl wie folgt definieren:
Es wird zum
/errors/404.html
Bildschirm weitergeleitet und die benutzerdefinierte Seite wird nicht gefunden angezeigt.quelle