Statuscodes bei htaccessgesicherten Ordnern / PHP-File lesen

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

Statuscodes bei htaccessgesicherten Ordnern / PHP-File lesen

Postby Atrus2711 » 06. September 2006 08:10

Hallo Forum,

ich habe zwei Fragen

1)
Wo liegen eigentlich die genauen Unterschiede zwischen den Statuscodes
401 Unauthorized und 403 Forbidden?
Ich zweifle nämlich an den Ursachen für folgenden Fall. Ich habe zwei Ordner im DocRoot, die beide per htaccess kennwortgeschützt sind. Die http.conf hat (für Testzwecke) AllowOverride auf all.
Ordner admin ist nur dem Admin zugänglich, daher ist seine htaccess:
require user admin
Options -Indexes
Ordner team steht nur 4 Usern bereit. Seine htaccess:
require user admin team1 team2 team3 team4
Options -Indexes

Die Anmeldung klappt auch, und wenn jeder nur in seinem Beritt arbeitet, geht alles klar. Versucht allerdings ein team1 sich am AdminOrdner, kommt die Anmeldemaske 3x (ist OK), aber auch bei richtiger (!) Anmeldung als team kommt dann nach dem 3. Mal ein 401 und nicht ein 403, wie ich es erwartet hätte. team1 hat sich aber doch richtig identifiziert?! Kann man nicht die Fälle unterscheiden "User/Kennwort falsch" und "Anmeldung OK, aber keine Zugriffsrechte?"


2)
ImAdmin-Bereich liegen allerlei Helferlein, die dem admin das Warten der Webseite ermöglichen. U.a. ist auch ein PHP-Hochladescript vorhanden, das prima klappt. Was mir nun noch fehlt, ist eine Downloadmöglichkeit, mit der der admin die per HTML-Formular angegebene Datei runterladen kann (z.B. um sie zu bearbeiten und dann wieder hochzuladen). Für Bilder u.ä. reicht ja ein Aufruf per Adresse (admin darf überall hin); aber für interpretierte Dateien wie .htm oder .php erhalte ich dabei natürlich nicht den Quellcode, sondern die Ausgabe. Wie kann ich da vorgehen?

Gruß und Dank
Martin
Atrus2711
 
Posts: 32
Joined: 26. January 2005 08:40

Re: Statuscodes bei htaccessgesicherten Ordnern / PHP-File l

Postby ManUnix » 06. September 2006 13:19

Hi Atrus2711,

Atrus2711 wrote:Wo liegen eigentlich die genauen Unterschiede zwischen den Statuscodes 401 Unauthorized und 403 Forbidden?

Unauthorized kommt, wenn der Login fehlgeschlagen ist (egal ob User / Passwort falsch oder garnicht in .htpasswd, oder per "require user" ausgeschlossen)

Forbidden erscheint, wenn z.B. per htaccess der Zugriff auf einen Ordner verweigert wurde (Deny from...) oder die chmod / chown Rechte falsch gesetzt sind.


Atrus2711 wrote:Versucht allerdings ein team1 sich am AdminOrdner, kommt die Anmeldemaske 3x (ist OK), aber auch bei richtiger (!) Anmeldung als team kommt dann nach dem 3. Mal ein 401 und nicht ein 403, wie ich es erwartet hätte.

Naja, die Aussage "auch bei richtiger (!) Anmeldung" stimmt ja nicht ganz, denn der einzige User der in den Admin-Ordner darf, ist "admin" und sonst keiner, da kann "teamX" versuchen bis er schwarz wird, da er ja nicht berechtigt ist, den Ordner zu betreten.

Somit ist nach 3 Versuchen der Status "Unauthorized" und nicht "Forbidden", weil ob der User jetzt einfach nicht in der Lage war, bei 3 Versuchen sein Passwort richtig einzugeben, oder ob er tatsächlich nicht auf den Ordner zugreifen darf, das ist htaccess egal (Benutzer für diesen Ordner nicht authentifiziert - fertig).


Atrus2711 wrote:team1 hat sich aber doch richtig identifiziert?!

s.o., er hat sich im Hinblick auf den Ordner "team" richtig authentifiziert, aber nicht für "admin".

Das "require user" lässt halt wirklich nur diejenigen zu, die dürfen (der Rest wird von vornherein geblockt).
Ob "teamX" jetzt mit in der .htpasswd steht oder nicht ist da egal, für den Ordner "admin" sieht es so aus, als ob es nur "admin" in der .htpasswd gibt und sonst keinen.


Atrus2711 wrote:Kann man nicht die Fälle unterscheiden "User/Kennwort falsch" und "Anmeldung OK, aber keine Zugriffsrechte?"

nicht wirklich, jedenfalls nicht mit Boardmitteln.
Wenn man mit der Ansicht vom Apache absolut nicht leben kann, muss man halt die Fehlerseiten dahingehend ändern, dass die Unauthorized-Seite nachträglich noch prüft, wo das Problem lag und dann auf eine (eigene) Forbidden-Fehlerseite weiterleitet.

Also Login von "teamX" im Admin-Ordner - 3 Versuche schlagen fehl, er landet auf Unauthorized, welche eine selbstgebastelte PHP-Seite darstellt, die prüft dann, wo das Problem lag.
Gibt es den User in der .htpasswd - wenn ja, stimmt das Passwort überein?
Wenn ja, dann ist der Zugriff für den Ordner "Forbidden".
Wenn eines von beiden schon nicht stimmt, dann ist der Zugriff Unauthorized.

Aber in der Regel weiß ein User ja, auf welche Ordner er Zugriff hat und auf welche nicht, drum stört mich das überhaupt nicht.

cu,
Manu
User avatar
ManUnix
 
Posts: 113
Joined: 16. April 2006 15:14

Prima, danke für die Infos!

Postby Atrus2711 » 06. September 2006 13:29

Prima, danke für die Infos! :wink: Werde dann mal meine 401-und 403-ErrorDocuments ein bißchen überarbeiten.

Gruß
Martin
Atrus2711
 
Posts: 32
Joined: 26. January 2005 08:40

Re: Statuscodes bei htaccessgesicherten Ordnern / PHP-File l

Postby ManUnix » 08. September 2006 15:02

Hi Atrus2711,

Atrus2711 wrote:aber für interpretierte Dateien wie .htm oder .php erhalte ich dabei natürlich nicht den Quellcode, sondern die Ausgabe. Wie kann ich da vorgehen?

http://de.php.net/manual/de/function.header.php

für PHP:
Code: Select all
<?php
header("Content-type: application/x-httpd-php");
header("Content-Disposition: attachment; filename=datei.php");
readfile("datei.php");
?>


für HTML:
Code: Select all
<?php
header("Content-type: text/html");
header("Content-Disposition: attachment; filename=datei.htm");
readfile("datei.htm");
?>


Dementsprechend für die Dateiendungen "Content-type" anpassen (http://de.selfhtml.org/diverses/mimetypen.htm)

cu,
Manu
User avatar
ManUnix
 
Posts: 113
Joined: 16. April 2006 15:14

Postby Atrus2711 » 11. September 2006 08:19

Danke, so hat es funktioniert! :D

Gruß
Martin
Atrus2711
 
Posts: 32
Joined: 26. January 2005 08:40


Return to Apache

Who is online

Users browsing this forum: No registered users and 23 guests