Bestimmte Dateien aus zwei Verzeichnissen mit .htaccess schützen
nadja125
- https
Hallo zusammen,
ich habe eine Frage, undzwar habe ich folgende Struktur auf meinem Webspace:
/kunde/uebersicht.php
/kunde/anderedatei1.php
/kunde/anderedatei2.php
/kunde/katalog/kat1.pdf
/kunde/katalog/kat2.pdf
/kunde/katalog/kat3.pdf
/kunde/katalog/kat4.pdf
Undzwar möchte ich gerne die Dateien uebersicht.pdf sowie die kat1.pdf, kat2.pdf... per htaccess mit einem Passwortschutz versehen. anderedatei1.php und anderedatei2.php sollen NICHT von dem Schutz betroffen sein. Kann mir jemand sagen, wie ich das am besten hinbekomme?
Ich habe jetzt ewig gesucht und finde einfach keine Lösung, bin dankbar für jede Hilfe!
nadja125
Hellihello
ich habe eine Frage, undzwar habe ich folgende Struktur auf meinem Webspace:
/kunde/uebersicht.php
/kunde/anderedatei1.php
/kunde/anderedatei2.php/kunde/katalog/kat1.pdf
/kunde/katalog/kat2.pdf
/kunde/katalog/kat3.pdf
/kunde/katalog/kat4.pdfUndzwar möchte ich gerne die Dateien uebersicht.pdf
Das ist doch .php. Meines Wissens kannst Du mit .htaccess den Passwortschutz nur für ein ganzes Verzeichnis einrichten. Pack die "uebersicht" in /katalog, oder bau in die uebersicht.php eine $_SESSION-Sperre ein.
sowie die kat1.pdf, kat2.pdf... per htaccess mit einem Passwortschutz versehen. anderedatei1.php und anderedatei2.php sollen NICHT von dem Schutz betroffen sein. Kann mir jemand sagen, wie ich das am besten hinbekomme?
Hier kanns Du doch .htaccess - Passwortschutz nutzen.
Dank und Gruß,
Hello,
Meines Wissens kannst Du mit .htaccess den Passwortschutz nur für ein ganzes Verzeichnis einrichten.
Nein, in der .htaccess-Datei können auch Vereinbarungen für einzelne Files oder Gruppen davon, sowie für einzelne Methoden getroffen werden. Die Einschränkungen sind auch teilweise kaskadierbar.
http://httpd.apache.org/docs/2.2/mod/core.html#files
und
http://httpd.apache.org/docs/2.2/mod/core.html#filesmatch
und
http://httpd.apache.org/docs/2.2/mod/core.html#location
und
http://httpd.apache.org/docs/2.2/mod/core.html#locationmatch
und
http://httpd.apache.org/docs/2.2/mod/core.html#limit
und
http://httpd.apache.org/docs/2.2/mod/core.html#limitexcept
Ein harzliches Glückauf
Tom vom Berg
Hellihello Tom,
wie aber löse ich folgendes.
In example.com/test findet sich:
AuthUserFile /home/bla-blub/example.com/htdocs/.htpasswd
AuthGroupFile /dev/null
AuthName Intern
AuthType Basic
<Limit GET>
require valid-user
</Limit>
Aber die Datei im Unterordner example.com/test/testunterornder/test.php will ich "freigeben", also von außen zugänglich machen - ohne passwort.
Dank und Gruß,
Hello,
nur so als dumme Idee:
<Limit GET>
<FilesMatch ...> http://httpd.apache.org/docs/2.2/mod/core.html#filesmatch
require valid-user
</Files>
</Limit>
Ich habe es nicht ausprobiert und konnte aus dem Manual nicht erkennen, dass es _nicht_ funktionieren kann.
http://httpd.apache.org/docs/2.2/mod/core.html#require
Ein harzliches Glückauf
Tom vom Berg
Hellihello
<FilesMatch "!^test(.*).php">
<Limit GET>
require valid-user
</Limit>
</FilesMatch>
Sollte eigentlich für alle Dateien, die _nicht_ mit test... beginnen einen Valid User requiren. Tut er aber nicht.
<FilesMatch "!test(.*).php"> bringts auch nicht.
Allein
<FilesMatch "test(.*).php">
bringt eine Passwortabfrage für test.php (und seinen Bruder test2.php).
Mh...;
Dank und Gruß,
Hello,
<FilesMatch "!^test(.*).php">
Die Direktive <FilesMatch> begrenzt wie die Direktive <Files> die enthaltenen Anweisungen auf Dateinamen. Sie akzeptiert jedoch reguläre Ausdrücke.
Da scheint doch etwas nicht zu stimmen an Deinem regulären Ausdruck.
Ein harzliches Glückauf
Tom vom Berg
Hellihello
<FilesMatch "!^test(.*).php">
Die Direktive <FilesMatch> begrenzt wie die Direktive <Files> die enthaltenen Anweisungen auf Dateinamen. Sie akzeptiert jedoch reguläre Ausdrücke.
Da scheint doch etwas nicht zu stimmen an Deinem regulären Ausdruck.
(;-). Nehm ich das ! und das ^ wech, geht sie. Also muss der Ausdruck ja einigermaßen o.k. sein.
Aber ich suche ja die Negation. Ich würde ja gerne eine Datei freigeben, alle anderen passwortgeschützt lassen.
Dank und Gruß,
Hello,
(;-). Nehm ich das ! und das ^ wech, geht sie. Also muss der Ausdruck ja einigermaßen o.k. sein.
Ein "Nicht" muss sich doch aber auf etwas beziehen. I.d.R. beziehen sich die Modifikatoren innerhalb des Patterns immer nur auf das (einzelne) nächste Zeichen.
Ein harzliches Glückauf
Tom vom Berg
Hellihello
Hello,
(;-). Nehm ich das ! und das ^ wech, geht sie. Also muss der Ausdruck ja einigermaßen o.k. sein.
Ein "Nicht" muss sich doch aber auf etwas beziehen. I.d.R. beziehen sich die Modifikatoren innerhalb des Patterns immer nur auf das (einzelne) nächste Zeichen.
Ich hatte mal:
RewriteRule !^quellen index_rewrite.php
irgendwann bentutzt. Das ging, alle Urls die _nicht_ mit "quellen" begannen, wurden rewritten. quellen/test.css zB. nicht.
Irgendwo steckt da eine Verständnislücke bei mir.
<FilesMatch "!^test2.*.php$">
funktioniert ja nicht. ! würde sich dann auf das ^ beziehen, also "nicht am Anfang" ???
<FilesMatch "!(test2.*.php)$">
also schön eingeklammert bringt auch nischt.
Dank und Gruß,
Hallo,
<FilesMatch "!^test2.*.php$">
funktioniert ja nicht. ! würde sich dann auf das ^ beziehen, also "nicht am Anfang" ???
<FilesMatch "!(test2.*.php)$">
also schön eingeklammert bringt auch nischt.
an dieser Stelle hat es mich schon mehrfach unter den Nägeln gejuckt, einen bug report abzuliefern. Es wäre sehr schön, wenn zumindest in den Direktiven <.+Match> (ich darf das hoffentlich so verkürzt schreiben) volle PCRE-Unterstützung wäre. Jedoch gehe ich von einer Kettenreaktion im Quellcode aus, der daraufhin geändert werden will. Manche Wanze sitzt eben doch recht tief.
Gruß aus Berlin!
eddi
Hellihello eddi,
<FilesMatch "!^test2.*.php$">
funktioniert ja nicht. ! würde sich dann auf das ^ beziehen, also "nicht am Anfang" ???
<FilesMatch "!(test2.*.php)$">
also schön eingeklammert bringt auch nischt.
an dieser Stelle hat es mich schon mehrfach unter den Nägeln gejuckt, einen bug report abzuliefern. Es wäre sehr schön, wenn zumindest in den Direktiven <.+Match> (ich darf das hoffentlich so verkürzt schreiben) volle PCRE-Unterstützung wäre. Jedoch gehe ich von einer Kettenreaktion im Quellcode aus, der daraufhin geändert werden will. Manche Wanze sitzt eben doch recht tief.
Und, wie geht denn das mit der Negation dann, weißt du das?
RewriteRule !^quellen index_rewrite.php
funzt ja.
Binnenberlinischen Dank und Gruß,
Re:
Und, wie geht denn das mit der Negation dann, weißt du das?
RewriteRule !^quellen index_rewrite.php
innerhalb mod_rewrite sind die Direktiven auch negierbar. Aber leider nicht im core. Das ist so hinzunehmen. ;(
Gruß aus New Istanbul!
eddi
--
Türkei <> Schweiz 2-1
Hier war Silvesterstimmung auf den Straßen
Hellihello
Und, wie geht denn das mit der Negation dann, weißt du das?
RewriteRule !^quellen index_rewrite.php
innerhalb mod_rewrite sind die Direktiven auch negierbar. Aber leider nicht im core. Das ist so hinzunehmen. ;(
Aha, wenn ich also für alle Dateien innerhalb eines Verzeichnisses "Require: valid user;" haben will, aber für eine nicht, kann ich das "Require" dann für die eine Datei wieder zurücknehmen?
Dank und Gruß aus dem völlig ruhigen Südwesten (wäre dann sozusagen im Mittelmeer),
Hi,
Aha, wenn ich also für alle Dateien innerhalb eines Verzeichnisses "Require: valid user;" haben will, aber für eine nicht, kann ich das "Require" dann für die eine Datei wieder zurücknehmen?
Ja, da kommt dann <FILES> zusammen mit SATISFY wieder ins Spiel.
MfG ChrisB
Hallo Frank,
Aha, wenn ich also für alle Dateien innerhalb eines Verzeichnisses "Require: valid user;" haben will, aber für eine nicht, kann ich das "Require" dann für die eine Datei wieder zurücknehmen?
Ja, da kommt dann <FILES> zusammen mit SATISFY wieder ins Spiel.
dazu noch ein Beispiel für den Apachen 2.2.*:
[DocRoot]
|
-test/ | |-index.html | |-offen.html | |-.htaccess |
-.htpasswd
Inhalt der .htaccess:
AuthType Digest
AuthDigestProvider file
AuthName "private area"
AuthUserFile [DocRoot]/test/.htpasswd
Require valid-user
<Files offen.html>
Order Allow,Deny
Allow from all
Satisfy any
</Files>
Gruß aus Berlin!
eddi
Hellihello eddi,
Hallo Frank,
frankx aka Robert oder umgekehrt. Mein Pseudonym hat nischt mit meinem Namen ssu tun (;-).
AuthType Digest
#AuthDigestProvider file
AuthName "private area"
AuthUserFile /bla/bla/example.com/htdocs/.htpasswd
AuthGroupFile /dev/null
Require valid-user
<Files test.php>
Order Allow,Deny
Allow from all
Satisfy any
</Files>
Bringt einen Internal Server Error bei allen, außer bei test.php. Kommentiere ich AuthDigestProvider aus, dann gibts den 500er bei allen Anfragen.
Jruß,
Hellihello
AuthType Basic
funzt dann. Digest aber nicht. Funzen heißt: lässt die test.php durch, die anderen per Passwortabfrage.
Dank und Gruß,
Robert aka
frankx
Re:
funzt dann. Digest aber nicht. Funzen heißt: lässt die test.php durch, die anderen per Passwortabfrage.
Na, nee na, mod_auth_digest darf's schon sein. Alle Benötigten Module für die Konfiguration auf einen Blick:
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_host_module modules/mod_authz_host.so
Robert
Ei, angenehm :)
Gruß aus Berlin!
eddi
Hellihello eddi,
funzt dann. Digest aber nicht. Funzen heißt: lässt die test.php durch, die anderen per Passwortabfrage.
Na, nee na, mod_auth_digest darf's schon sein. Alle Benötigten Module für die Konfiguration auf einen Blick:
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_host_module modules/mod_authz_host.so
Ich vergaß wohl zu sagen, dass sich diese Sache auf einem strato-Miet-Space befindet, kein (v)Server mit root-Zugriff.
Dank und Gruß,
Robert aka
strato?
Du hast mein Beileit.
Hellihello
<Files offen.html>
Order Allow,Deny
Allow from all
Satisfy any
</Files>
funktioniert übrigens auch, wenn "offen.html" in [DocRoot]/test/unterordner liegt.
Und zwar ohne relative Pfadangabe, sondern nur mit dem Dateinamen. Bezieht sich das "<Files>" auf alle files, mit selbigem Namen - egal in welchem Ornder?
Dank und Gruß,
Re:
<Files offen.html>
Order Allow,Deny
Allow from all
Satisfy any
</Files>funktioniert übrigens auch, wenn "offen.html" in [DocRoot]/test/unterordner liegt.
Bezieht sich das "<Files>" auf alle files, mit selbigem Namen - egal in welchem Ornder?
Ja. Im _jeweiligen_ Unterverzeichnis müsste also eine neue Konfiguration überschreibend wirken, wenn "offen.html" in den Unterverzeichnissen nicht abrufbar sein sollte. Es ist also ein sehr gutes Beispiel dafür, dass einer fehlerhaften Struktur als Grundlage eines Projekts mit Modifizierung der Konfiguration _alleine_ nur schwerlich beizukommen ist.
Gruß aus Berlin!
eddi
Hellihello
Bezieht sich das "<Files>" auf alle files, mit selbigem Namen - egal in welchem Ornder?
Ja. Im _jeweiligen_ Unterverzeichnis müsste also eine neue Konfiguration überschreibend wirken, wenn "offen.html" in den Unterverzeichnissen nicht abrufbar sein sollte. Es ist also ein sehr gutes Beispiel dafür, dass einer fehlerhaften Struktur als Grundlage eines Projekts mit Modifizierung der Konfiguration _alleine_ nur schwerlich beizukommen ist.
Na, die "offen.html" liegt eins tiefer, und ist auch mutterseelenallein mit ihrem Namen.
Ist übrigens keine "Grundlage" sondern ein Einzelfall, also war eine Sondereinrichtung der einen Datei für eine Person, und jetzt dachte ich, der Rest des Verzeichnisses sollte eigentlich geschützt werden.
Bisher hatte ich nämlich gemeint, dass URLs, wenn sei nicht bekannt gemacht würden, ja erstmal auch unbekannt wären. Aber dann stellte ich letzlich fest, dass ich durch meinen PageRank-Anzeiger die URLs bei Google angebe. Und Google protokolliert fleißig mit. In dem Sinne keine sensiblen Daten, aber auch keine öffentlichen. Nun, die Erfahrung soll natürlich bei Grundlagenplanungen mit einfließen. Da aber bietet sich ja von vornherein eine robustere Struktur zur Trennung von System/Admin und Public/User an.
Dank und Gruß,
Re:
Da aber bietet sich ja von vornherein eine robustere Struktur zur Trennung von System/Admin und Public/User an.
Mag man ja über die Trennung von Publikation und dessen Nutzer noch reden können, halte ich jedoch eine Trennung des Administrators vom System für unstreitbar schadhaft. ^,-
Gruß aus Berlin!
eddi
Dank und Gruß aus dem völlig ruhigen Südwesten (wäre dann sozusagen im Mittelmeer),
Mann, hat unser Bärchen doch große Tatzen. ;)
Hi,
Undzwar möchte ich gerne die Dateien uebersicht.pdf sowie die kat1.pdf, kat2.pdf... per htaccess mit einem Passwortschutz versehen. anderedatei1.php und anderedatei2.php sollen NICHT von dem Schutz betroffen sein. Kann mir jemand sagen, wie ich das am besten hinbekomme?
Beschaeftige dich mit der <Files>-Direktive.
MfG ChrisB
Hallo,
Undzwar möchte ich gerne die Dateien uebersicht.pdf sowie die kat1.pdf, kat2.pdf... per htaccess mit einem Passwortschutz versehen. anderedatei1.php und anderedatei2.php sollen NICHT von dem Schutz betroffen sein. Kann mir jemand sagen, wie ich das am besten hinbekomme?
Beschaeftige dich mit der <Files>-Direktive.
bitte additional ebenso mit Order beschäftigen!
Gruß aus Berlin!
eddi