2009-05-31 6 views
0

Ich wollte .htaccess verwenden, um ein Verzeichnis für ein PHP-Skript mit einem Passwort zu schützen, schreibe ich, da ich meinen PHP-Fähigkeiten nicht vertraue, um ein sicheres Login zu erstellen, aber ich habe dich herausgefunden kann relative Pfade für AuthUserFile nicht verwenden und ich konnte das nicht verallgemeinern.Sicheres Verzeichnis Passwortschutz ohne .htaccess

Wenn Sie mich zu einem sicheren PHP-Login-Skript leiten könnten, um ein Verzeichnis mit einem Passwort zu schützen, wäre ich sehr dankbar. Vielen Dank.

Antwort

1

Eine Sache, die Sie tun können, ist, all Ihre "geheimen" Dateien in einem Verzeichnis außerhalb der Webroot des Servers zu behalten. Der Zugriff auf diese Dateien kann dann über ein einziges PHP-Skript in Ihrem Verzeichnis erfolgen. Etwas wie folgt aus:

http://www.example.com/protected-directory/access.php?file=/foo/document.doc

Mit einer Verzeichnisstruktur wie folgt aus:

+--+ /server_root 
    | 
    +--+ /web_root 
    | | 
    | +--+ /protected-directory 
    |  +-- access.php 
    |  +-- access-denied.html 
    | 
    +--+ /protected_root 
     | 
     +--+ /foo 
     +-- document.doc 

In Ihrem access.php Sie so etwas tun würde:

$file = $_REQUEST['file']; 
if ($user->hasAccessTo($file)) { 
    readfile("/server_root/protected_root/$file"); 
} else { 
    readfile('access-denied.html'); 
} 

Nun müssen Sie Achten Sie darauf, dass Sie keine Schraube mit Ihrem file -Parameter schrauben und etwas wieübergibt. Wahrscheinlich möchten Sie auch sicherstellen, dass Sie im obigen Beispiel die richtigen Header senden, die ich aus Gründen der Übersichtlichkeit weggelassen habe.

0

Sie können absolute Pfade zur AuthUserFile verwenden und veranlassen, dass diese Datei an einem für den Webserver nicht zugänglichen Ort abgelegt wird. Das habe ich seit vielen Jahren gemacht. Funktioniert gut.

+0

Die Sache ist, wenn ich das verteile, weiß ich nicht, wo der Benutzer das Skript platzieren wird oder auf welchem ​​Betriebssystem sie sich befinden. Also glaube ich nicht, dass ich .htaccess benutzen kann? – tom

+0

Sie können weiterhin .htaccess (und .htpasswd) verwenden. In der standardmäßigen Apache-Konfiguration gibt es eine Regel (zumindest für Apache2), um den Zugriff auf alle Dateien mit dem Namen .ht * zu blockieren. –