Mehrere FilesMatch in einer .htaccess-Datei

Alles, was den Apache betrifft, kann hier besprochen werden.

Mehrere FilesMatch in einer .htaccess-Datei

Postby Aleksej » 21. June 2010 13:47

Hallo allerseits!
Ich habe einige Experimente gemacht, wiel ich zu dem Thema nichts finden konnte. Es geht z.B. darum, wie man in jedes .htaccess einen Schutz für die Dateien, die mit einem Punkt beginnen, integrieren kann.

Ich habe zwei Dateien, Text1.htm und Text2.htm und zwei User user1 und user2.
Code: Select all
<FilesMatch "1\.htm$">
Require user user1
</FilesMatch>
<FilesMatch "\.htm$">
Require valid-user
</FilesMatch>

User1 und User2 haben beide Zugriff auf alle Dateien.

Code: Select all
<FilesMatch "\.htm$">
Require valid-user
</FilesMatch>
<FilesMatch "1\.htm$">
Require user user1
</FilesMatch>

User1 hat Zugriff auf alle Dateien, User2 hat keinen Zugriff auf Text1.htm.

Es scheint, dass mehrere Filesmatch-Abschnitte einfach von unten nach oben abgearbeitet werden und der erste Treffer für die Datei-User-Kombination die Authentifizierung abschliessend behandelt. Oder wie ist das genau?

Gruss
Aleksej
Aleksej
 
Posts: 4
Joined: 21. June 2010 13:28

Re: Mehrere FilesMatch in einer .htaccess-Datei

Postby WilliL » 22. June 2010 19:30

aus meiner Sicht sieht es eher so aus, als ob die 2. Direktive <FilesMatch.. die erste Direktive überschreiben würde.
Willi
WilliL
 
Posts: 661
Joined: 08. January 2010 10:54
Operating System: Win7Home Prem 64 SP1

Re: Mehrere FilesMatch in einer .htaccess-Datei

Postby Aleksej » 22. June 2010 19:44

Besten Dank für Deine Antwort. Ich hatte nicht alle meine Experimente in meinen Beitrag gequetscht. Ich habe, unter anderem, auch folgendes probiert:
Code: Select all
<FilesMatch "\.htm$">
Require valid-user
</FilesMatch>
<FilesMatch "1\.htm$">
Require user user1
</FilesMatch>
<FilesMatch "2\.htm$">
Require user user2
</FilesMatch>

Nun hat User1 Zugriff auf Text1.htm, nicht aber auf Text2.htm. User2 kann auf Text2.htm, nicht aber auf Text1.htm zugreifen. Das zeigt, dass nicht einfach nur der letzte Abschnitt gilt sondern auch der mittlere Abschnitt eine Rolle spielt.
Gruss
Aleksej
Aleksej
 
Posts: 4
Joined: 21. June 2010 13:28

Re: Mehrere FilesMatch in einer .htaccess-Datei

Postby Nobbie » 22. June 2010 21:33

Aleksej wrote:Es scheint, dass mehrere Filesmatch-Abschnitte einfach von unten nach oben abgearbeitet werden und der erste Treffer für die Datei-User-Kombination die Authentifizierung abschliessend behandelt.


Nö.

Offensichtlich müssen ALLE Bedingungen erfüllt sein. Was ja auch logisch ist.
Nobbie
 
Posts: 8767
Joined: 09. March 2008 13:04

Re: Mehrere FilesMatch in einer .htaccess-Datei

Postby Aleksej » 23. June 2010 08:19

Danke für Deine Antwort. Beim ersten Beispiel in meinem ersten Post ist für User2 die oberste Bedingung nicht erfüllt, dennoch erhält er Zugriff auf beide Dateien. Also kann es nicht einfach so sein, dass alle Bedingungen erfüllt sein müssen. Ausserdem zeigen die beiden Beispiele aus meinem ersten Post, dass die Reihenfolge der Bedingungen eine Rolle spielt.
Gruss
Aleksej
Aleksej
 
Posts: 4
Joined: 21. June 2010 13:28

Re: Mehrere FilesMatch in einer .htaccess-Datei

Postby Nobbie » 23. June 2010 12:35

Ich habe jetzt auch mal ein wenig getestet und kann nur sagen: das geht eben so nicht.

Ein Kernproblem ist, dass die Authorisierung zwar auf dem Server durchgeführt wird, aber ein erfolgreicher Login wird vom Browser verwaltet, d.h. der merkt sich die User-Daten für den nächsten (gleichen) Request.

Deswegen ist es sehr schwer feststellbar (dazu müßte man den Traffic protokollieren), welche Requests zwischen dem Browser und dem Server ausgetauscht werden. Die Dialogbox, die als Login erscheint, wird ja nicht von Apache gesendet, sondern vom Browser. Der hat seinerseits vom Apache die Nachricht bekommen, dass in einem bestimmten Kontext eine UserID benötigt wird. Wenn der Browser eine UserID im Cache hat, sendet er diese (mit Passwort), falls sie passt, sendet Apache die angeforderte Seite.

Ob Apache nun alle FilesMatch abklappert kann ich nicht mit Sicherheit sagen.

Ich stelle aber fest, dass in diesem Umfeld sich sogar die Browser verschieden verhalten, insbesondere wenn man die .htaccess immer wieder ändert und für die gleiche Datei (z.B. text1.html) einmal user1 und beim nächsten Mal user2 verlangt. Firefox kann sich sogar mehrere UserIDs merken und füttert offensichtlich Apache mit allen ihm bekannten UserIDs, bis dieser Ruhe gibt. Opera dagegen hängt sich platterdings auf. IE wiederum fragt bei user-Wechsel dann auf einmal drei(!) mal nach.

Interessant ist auch der Versuch, einfach genau das gleiche Pattern (beispielsweise 1\.htm$) zwei mal untereinander zu schreiben und oben nach user1 und unten nach user2 zu fragen - rein logisch müßte das unmöglich sein. Aber in der Praxis wird die Datei ausgeliefert.

Zusammenfassend kann ich nur sagen, es ist keine gute Idee, mehrere FilesMatch hintereinander zu schreiben, die überschneidende (oder gar komplett inkludierende) Pattern besitzen. Das sieht diese API einfach nicht vor und das Ergebnis ist chaotisch.
Nobbie
 
Posts: 8767
Joined: 09. March 2008 13:04

Re: Mehrere FilesMatch in einer .htaccess-Datei

Postby Aleksej » 23. June 2010 21:16

So kommt es mir auch langsam vor, dass das ganze einfach keine gute Idee ist ... Meine Experimente habe ich mit Firefox durchgeführt, und ich habe mir die Mühe gemacht, den Browser nach jedem einzelnen Versuch zu schliessen und neu zu starten. Dieses Verfahren hat die von Dir beschreibenen Effekte (sind mir ebenfalls aufgefallen) ausgeschaltet.
Wieauchimmer, ich hatte gehofft, dass es für mehrere, gleiche, aufeinanderfolgende Files-, FilesMatch- oder ähnliche Direktiven ein dokumentiertes Verhalten des Servers gibt. Ich beginne festzustellen, dass die Recherchen dazu nicht die Mühe wert sind :idea:
Gruss
Aleksej
Aleksej
 
Posts: 4
Joined: 21. June 2010 13:28


Return to Apache

Who is online

Users browsing this forum: No registered users and 4 guests