.htaccess verzeichniss schutz mit mod_rewrite

Dieses Thema im Forum "Webentwicklung" wurde erstellt von encud, 31. Mai 2011 .

  1. 31. Mai 2011
    Moinsen,

    ich entwickle gerade eine Website mit dem Kohana 3 Framework.
    Dieses liefert standartmäßig eine .htaccess Datei mit um die URL per mod_rewrite anzupassen:
    Code:
    # Turn on URL rewriting
    RewriteEngine On
    
    # Installation directory
    RewriteBase /dir/
    
    # Protect hidden files from being viewed
    <Files .*>
     Order Deny,Allow
     Deny From All
    </Files>
    
    # Protect application and system files from being viewed
    RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
    
    # Allow any files or directories that exist to be displayed directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    # Rewrite all other URLs to index.php/URL
    RewriteRule .* index.php/$0 [PT]
    
    Die Datei liegt in http://www.website/dir/

    Jetzt habe ich eine Route
    http://www.website/dir/admin
    erstellt, welche (wie der Name schon vermuten lässt) Passwortgeschüzt werden soll.

    Hab irgendwie nichts brauchbares für Verzeichnissschutz in verbindung mit mod_rewrite gefunden.

    Hat jemand eine Idee?

    LG
    encud
     
  2. 31. Mai 2011
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    AW: .htaccess verzeichniss schutz mit mod_rewrite

    ich hab das script aus folgendem grund nicht ausprobiert:
    Das Verzeichniss /dir/admin existiert nicht. ich habe lediglich /dir/application/classes/controller/admin.php
    und genau das ist eigentlich mein Problem, ich weiß nicht genau wo ich die dateien ablegen soll, sodass auch wirklich nur /dir/admin vom passwortschutz betroffen ist.

    ansonsten find ich das script aber ganz nützlich
     
  3. 31. Mai 2011
    AW: .htaccess verzeichniss schutz mit mod_rewrite

    PHP: HTTP-Authentifizierung mit PHP - Manual
     
  4. 1. Juni 2011
    AW: .htaccess verzeichniss schutz mit mod_rewrite

    Du kannst die ganzen Auth* Anweisungen in eine Kontext-Direktive wie <Location> oder <Directory>+<Files> packen, um die Anweisungen auf eine URL oder eine Datei zu beschränken.
     
  5. 1. Juni 2011
    AW: .htaccess verzeichniss schutz mit mod_rewrite

    Nur um auf Nummer sicher zu gehen, wenn ich dieses Beispiel nehme muss ich doch noch eine Abfrage mit rein bringen um zu gucken ob es den User auch wirklich gibt, oder?
    z.B. so:
    PHP:
    <? php
    if (!isset( $_SERVER [ 'PHP_AUTH_USER' ])) {
        
    header ( 'WWW-Authenticate: Basic realm="My Realm"' );
        
    header ( 'HTTP/1.0 401 Unauthorized' );
        echo 
    'Text, der gesendet wird, falls der Benutzer auf Abbrechen drückt' ;
        exit;
    } elseif(
    $_SERVER [ 'PHP_AUTH_USER' ] ==  'admin'  &&  $_SERVER [ 'PHP_AUTH_PW' ] ==  'pwd' ) {
        echo 
    "<p>Eingeloggt als  { $_SERVER [ 'PHP_AUTH_USER' ]} </p>" ;
    }
    ?>
    Habe in meiner .htaccess-Datei folgendes angefügt:
    Code:
    <Directory /dir/admin/>
     AuthType Basic
     AuthName "Administration Panel"
     AuthUserFile C:/xampp/htdocs/dir/.htpasswd01
     require valid-user
    </Directory>
    dann kommt Error 500. Ohne
    Code:
    <Directory /dir/admin/>
    funktioniert es. Anstatt Directory Location zu benutzen bringt auch nichts.
    Magste mir sagen was ich falsch mache?
     
  6. 2. Juni 2011
    AW: .htaccess verzeichniss schutz mit mod_rewrite

    Hm, ich hatte einen kleinen Denkfehler. Da die Datei nicht direkt aufgerufen wird, fallen die Varianten mit "Directory" oder "Files" weg. Bleibt nur noch Location. Location ist aber nur in der Server- oder VHostkonfiguration erlaubt, nicht in der .htaccess!
     
  7. 2. Juni 2011
    AW: .htaccess verzeichniss schutz mit mod_rewrite

    ich dachte ich müsste dir den code dafür nicht vorkauen, aber gut

    PHP:
    <? php

    if (empty( $_SERVER [ 'PHP_AUTH_USER' ]))
        
    exit401 ();

    session_name ( 'staffsid' );
    session_start ();

    if (!isset(
    $_SESSION [ 'staff-member' ])) { 
        
    $user  $_SERVER [ 'PHP_AUTH_USER' ];
        
    $pass  $_SERVER [ 'PHP_AUTH_PW' ];

        
    // hier prüfen ob der benutzer existiert ...
        
    if (! checkUser ( $user $pass ))
            
    exit401 ();
            
        
    $_SESSION [ 'staff-member' ] =  $user ;
    } else
        
    $user  $_SESSION [ 'staff-member' ];
        
    // benutzer existiert
    print  "hallo  $user  :-)" ;

    // -----------------------------

    function  checkUser ( $user $pass ) {
        
    // diese daten kannst du dir aus ner db oder sonstwo ziehen
        
    static  $valid  = array( 'hans'  =>  'geheim' );
        
        return (isset(
    $valid [ $user ]) &&  $valid [ $user ] ===  $pass );
    }

    function 
    exit401 () {
        
    header ( 'WWW-Authenticate: Basic realm="Staff"' );
        
    header ( 'HTTP/1.1 401 Unauthorized' );
        exit(
    'permission denied' );
    }
     
  8. 3. Juni 2011
    AW: .htaccess verzeichniss schutz mit mod_rewrite

    dank dir!
    Ist ja im Prinzip das was ich gesagt/ gedacht habe, nur eben mit einer Session
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.