Ordner schützen ohne htaccess??

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Ordner schützen ohne htaccess??

Postby MB82 » 13. March 2006 14:50

Hallo,

ich bräuchte mal etwas Hilfe.

Ich habe ein Portal, bei dem diverse Ordner mit einem Passwort geschützt sind, da nicht jeder dessen Inhalt sehen soll. Bisher regle ich dies über htaccess. Wenn Die Nutzer ihr Passwort ändern, so schreibe ich diese bisher in eine MySQL-DB und erstelle dann automatisch die HTACCESS-Datei.

Geht das ganze nun auch etwas komfortabler?? Also das weiterhin dieses schöne Fenster hoch kommt, wenn diese geschützen Ordner aufgerufen werden, aber die Benutzer und Passwort-Kombination direkt mit der MySQL-DB verglichen wird??

Wäre für hilfreiche Hinweise dankbar.

Marcus
MB82
 
Posts: 10
Joined: 13. March 2006 14:29

Postby Wiedmann » 13. March 2006 14:58

aber die Benutzer und Passwort-Kombination direkt mit der MySQL-DB verglichen wird??

Du meinst "mod_auth_mysql".

Ordner schützen ohne htaccess??

Eine Datei ".htaccess" wirst du trotzdem brauchen:
Die ".htaccess" hat nicht ursprünglich was mit dem Zugriffsschutz zu tun, sondern ist einfach eine Konfigurationsdatei für den Apache (wie die httpd.conf).
--> Und Konfigurieren musst ja den geschützten Bereich. Sprich dem Apachen sagen woher er die User/Passwörter holen soll.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby MB82 » 15. March 2006 12:07

Danke für den Tipp.

Ich habe mich jetzt auch schon an die Umsetzung gewagt, aber ich bekomme jetzt nur die Fehlermeldung Error 500...

Weiß jemand woran es liegen könnte??

Ich nutze XAMPP 1.5.1
In der httpd.conf habe ich das Modul "LoadModule mysql_auth_module modules/mod_auth_mysql.so" wieder aktiviert
und "AllowOverride All" habe ich auch schon eingestellt.

Tabelle in MySQL sind angelegt und das Passwort habe ich mit der MySQL-Funktion MD5 verschlüsselt.

Hier meine .htaccess:
AuthName Bereich
AuthType Basic
AuthMySQLHost localhost
AuthMySQLDB authdb
AuthMySQLUser htaccess
AuthMySQLPassword htaccesspsw
AuthMySQLUserTable users
AuthMySQLGroupTable groups
AuthMySQLNameField user
AuthMySQLPasswordField passwort
AuthMySQLGroupField group
AuthMySQLAuthoritative on
AuthMySQLCryptPasswords on
AuthMySQLKeepAlive off

Require user

Danke euch schon jetzt für Anregungen.

Marcus
MB82
 
Posts: 10
Joined: 13. March 2006 14:29

Postby Wiedmann » 15. March 2006 12:34

aber ich bekomme jetzt nur die Fehlermeldung Error 500

So als Tipp:
Bei einem Error 500 im Browser kann man dann im "error.log" den genauen Fehler nachlesen.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby MB82 » 15. March 2006 13:11

Danke, daran hatte ich noch gar nicht gedacht ;-)

Den Fehler habe ich jetzt behoben. Habe einen Fehler in der htaccess gehabt. AuthMySQLCryptPassword sollte heißen AuthMySQLCryptedPassword. :-D

Jetzt bekomme ich das begehrte Fenster, aber nach der Passworteingabe bekomme ich wieder einen Fehler. Diesmal steht aber nichts in der Error.log! ??

IE sagt:
Serverfehler!
Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist. Der Server ist entweder überlastet oder ein Fehler in einem CGI-Skript ist aufgetreten.

ERROR 500 ...

Könnte es an einem "falsch" gespeicherten Passwort liegen. Alle Beispiele die ich mir bis her angeschaut habe, haben ein deutlich kürzeres als das, was ich bei mir sehe.
MB82
 
Posts: 10
Joined: 13. March 2006 14:29

Postby MB82 » 15. March 2006 16:50

OK. Habs gerade hinbekommen mit meiner gewünschten MD5-Verschlüsselung!!!

Ich poste hier mal meine Lösung. Vielleicht hilft es ja jemanden mit dem selben Problem.

meine .htaccess:

AuthName Bereichsname
AuthType Basic
AuthMySQLEnable On
AuthMySQLHost DB-Host
AuthMySQLDB DB-Name
AuthMySQLUser DB-User
AuthMySQLPassword DB-User-Passwort
AuthMySQLUserTable Tabelle-mit-Username
AuthMySQLGroupTable Tabelle-mit-Gruppennamen
AuthMySQLNameField User-DB-Feld-Bezeichner
AuthMySQLPasswordField Passwort-DB-Feld-Bezeichner
AuthMySQLGroupField Gruppen-DB-Feld-Bezeichner
AuthMySQLAuthoritative on
AuthMySQLCryptedPasswords off
AuthMySQLKeepAlive off
AuthMySQLMD5Passwords On

Require valid-user

Auskommentieren (# entfernen) in der httpd.conf-Datei beim Eintrag
sLoadModule mysql_auth_module modules/mod_auth_mysql.so

Und setzen des Wertes in der httpd.conf-Datei

Directory "C:/xampp/htdocs">
...
AllowOverride All
...
</Directory>



Und vielen Dank an Wiedmann!!
MB82
 
Posts: 10
Joined: 13. March 2006 14:29

Postby MB82 » 05. April 2006 16:34

Ja ich bin es noch einmal. Also die HTACCESS funktioniert bisher gut.

Ich bin jetzt aber auf ein Problem gestoßen.

HTACCESS funktioniert super, wenn ich eine Datei oder einen Ordner direkt über URL öffnen möchte, bzw. bei einem Link das Ziel in einem neuen Fenster öffne.

ABER: Ich möchte die Dateien aus dem "schützenswerten" Ordner über include("./Ordern/datei.php") in ein PHP-Script einbinden. Jedoch werde ich jetzt nicht mehr nach dem Login gefragt?? Kann mir jemand sagen warum?? Wie bekomme ich das hin??
MB82
 
Posts: 10
Joined: 13. March 2006 14:29

Postby Wiedmann » 05. April 2006 16:51

ABER: Ich möchte die Dateien aus dem "schützenswerten" Ordner über include("./Ordern/datei.php") in ein PHP-Script einbinden. Jedoch werde ich jetzt nicht mehr nach dem Login gefragt??

PHP macht seine Includes direkt über das Dateisystem und unabhängig vom Apache. mod_auth dagegen wirkt ja nur im Apache bei Zugriff über HTTP auf eine Datei.

Du musst in diesem Fall also eine eigene Authentifizierung in die Datei einbauen welche die Includes macht.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby MB82 » 05. April 2006 21:51

OK. Schade. Das wollte ich ja eigentlich verhindern.

Gibt es da aber eine Möglichkeit meine eigene Authentifizierung (zB mit Sessions) mit der HTACCESS-Methode zu kombinieren?? Oder das Fenster für Benutzername und Passwort erzwingen??

An einigen Stellen kommt ja bereits bei mir die HTACCESS-Abfrage. Ich möchte nur ungern diese Abfrage mit meiner eigenen mischen.
MB82
 
Posts: 10
Joined: 13. March 2006 14:29

Postby Wiedmann » 05. April 2006 21:57

Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby MB82 » 05. April 2006 22:27

OK. Danke.

Ich werde es morgen mal probieren.
MB82
 
Posts: 10
Joined: 13. March 2006 14:29

Postby MB82 » 10. April 2006 15:07

Vielen Dank erst einmal für den Hinweis.

Ich habe an der Stelle fortgesetzt. Ich hänge aber schon wieder, leider ... :-(

Ich habe nun folgendes Stück Code zur Authentifizierung.


[code]<?php
if(!isset($PHP_AUTH_USER)) {
Header("WWW-Authenticate: Basic realm=\"Bereich \"");
Header("HTTP/1.0 401 Unauthorized");
echo "Text to send if user hits Cancel button\n";
exit;
} else {
include("dbconnect.php");
$sql = 'SELECT * FROM `person` WHERE kennung like \''.$PHP_AUTH_USER.'\' AND passwort = MD5(\''.$PHP_AUTH_PW.'\') LIMIT 0, 10 ';
$result = mysql_query($sql) or die ("Ung
MB82
 
Posts: 10
Joined: 13. March 2006 14:29

Postby MB82 » 11. April 2006 07:25

Hi,

hat irgendjemand auch nur den Ansatz eines Hinweises???

Ich habe heute Nacht bis 1 Uhr an diesem Script gesessen und verzweifle hier gleich ...

Irgendetwas scheine ich noch zu übersehen ... aber was??

Bin für wirklich jeden Hinweis dankbar.
MB82
 
Posts: 10
Joined: 13. March 2006 14:29

Postby MB82 » 11. April 2006 07:54

Ich nochmal ...

Habe sozusagen den Wald vor lauter Bäumen nicht gesehen...
Keine Ahnung, warum ich diese eine Zeile Code nicht schon vorher bei dem Link von Wiedmann gesehen habe ... :-(

Ich habe jetzte jeweils hinter
Code: Select all
    Header("WWW-Authenticate: Basic realm=\"Bereich \"");
    Header("HTTP/1.0 401 Unauthorized");

noch
Code: Select all
    die("Unauthorized access forbidden!");

gesetzt.

Sieht jetzt also so aus und funktioniert:
Code: Select all
    Header("WWW-Authenticate: Basic realm=\"Bereich \"");
    Header("HTTP/1.0 401 Unauthorized");
    die("Unauthorized access forbidden!");


Ich dachte ja immer, dass Header("HTTP/1.0 401 Unauthorized");
immer ein die(); beinhaltet. Dem war anscheinend nicht so...
MB82
 
Posts: 10
Joined: 13. March 2006 14:29


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 12 guests