Jörg Reinholz: Fortschritte II - (Diskussion: Schutz anderer Dateien)

Beitrag lesen

Ich will den Artikel PHP/Anwendung und Praxis/Loginsystem um den Schutz anderer Dateien ergänzen.

Dazu will ich einen neuen Abschnitt einführen, der dann, neben einer Beschreibung  folgendes enthält:

Ressource "sendFile.php"

<?php  
require_once('auth.php');  
if ( isset($_GET['file']) && $_GET['file']) {  
   $_GET['file'] = './' . $_GET['file'];  
   $forbidden=array('../', '/..', '/.ht');  
   $_GET['file']= str_replace($forbidden,'', $_GET['file']);  
   if ( is_file($_GET['file']) && is_readable($_GET['file']) ) {  
     if ( function_exists('finfo_open') ) {  
         $finfo = finfo_open(FILEINFO_MIME_TYPE);  
         $mimeType=finfo_file($finfo, $_GET['file']);  
     } elseif ( function_exists('mime_content_type') ) {  
         $mimeType=mime_content_type($_GET['file']);  
     } else {  
         $mimeType="application/unknown";  
     }  
      header('Content-Type:'. $mimeType);  
      readfile($_GET['file']);  
      exit;  
   }  
}  
show_forbidden ();  
exit;  

Dazu die .htaccess:

# keine Prüfung, ob mod_rewrite geladen ist.  
# Es ist besser, einen 500er Fehler zu haben als die Dateien  
# unbemerkt ungeschützt auszuliefern  
RewriteEngine On  
  
#Zugriffe auf versteckte Dateien (deren Namen  
# beginnen bei Unixoiden mit einem Punkt)  
werden verboten  
RewriteRule "^.*/\."             - [F]  
RewriteRule "^\."                - [F]  
  
#Directory Index (ggf. mit Parametern)  
RewriteRule "^$"                ./index.php [L]  
RewriteRule "^?(.*$)"           ./index.php?$1 [L]  
  
#PHP-Dateien kontrollieren sich selbst  
RewriteRule "^(.*\.php)$"       - [L]  
RewriteRule "^(.*\.php[?&].*)$" - [L]  
  
#Ressourcen, die nicht durch sendFile.php kontrolliert werden  
# z.B. Verzeichnis interior  
RewriteRule "^interior/(.*)$"   - [L]  
  
#Alles andere liefert die Datei sendFile.php aus  
RewriteRule "^(.*)$" ./sendFile.php?file=$1 [L]  

* Frage: Habe ich was übersehen?

* Erster Diskussionspunkt:

show_forbidden sollte aus meiner Sicht nicht zwischen Error 404 (Datei gibt es nicht) und 403 (Zutritt verboten) unterscheiden, um kein Angriffsziel im Sinne des Untersuchens, ob eine zu schützende Datei vorhanden ist, zu bieten.

* Zweiter Diskussionspunkt:

Tja. Was machen wir mit anderen Ressourcen? z.B. könnten Perl bzw. CGI Skripte auch die Session auswerten oder aber - und das ist der Stand des obigen - deren Quelltext ausliefern.

Jörg Reinholz

0 48

PHP/Anwendung und Praxis/Loginsystem

Jörg Reinholz
  • selfhtml-wiki
  1. 0

    Link zu: PHP/Anwendung und Praxis/Loginsystem

    Jörg Reinholz
  2. 0
    Matthias Apsel
    1. 0
      Jörg Reinholz
      1. 0
        Matthias Apsel
        1. 0
          Jörg Reinholz
    2. 0
      Sven Rautenberg
      1. 0
        Matthias Apsel
        1. 0
          Sven Rautenberg
          1. 0
            Matthias Apsel
          2. 0
            Matthias Apsel
            1. 0
              Sven Rautenberg
      2. 0
        Jörg Reinholz
        1. 0
          Matthias Apsel
          1. 0
            Jörg Reinholz
            1. 0
              Matthias Apsel
              1. 0
                dedlfix
                1. 0
                  Matthias Apsel
                  1. 0
                    dedlfix
                    1. 0
                      Matthias Apsel
  3. 0
    Sven Rautenberg
    1. 0
      Jörg Reinholz
      1. 0
        Sven Rautenberg
        1. 0
          Jörg Reinholz
          1. 0
            Auge
        2. 0
          Jörg Reinholz
  4. 0
    Matthias Apsel
  5. 0

    Fortschritte I

    Jörg Reinholz
    1. 0
      Jörg Reinholz
      1. 0
        Sven Rautenberg
        1. 0
          Jörg Reinholz
  6. 0
    Paul
    1. 0
      Jörg Reinholz
  7. 0
    1UnitedPower
    1. 0
      Jörg Reinholz
      1. 0
        Matthias Apsel
      2. 0
        1UnitedPower
    2. 0
      Jörg Reinholz
      1. 0
        1UnitedPower
        1. 0
          Jörg Reinholz
      2. 0
        Sven Rautenberg
    3. 0
      Sven Rautenberg
  8. 0

    Rückfrage zum Design der Verwaltung

    Jörg Reinholz
  9. 0
    Paul
    1. 0
      Jörg Reinholz
  10. 0

    Fortschritte II - (Diskussion: Schutz anderer Dateien)

    Jörg Reinholz
    1. 0
      Jörg Reinholz
  11. 0

    Fortschritte III - PHP/Anwendung und Praxis/Loginsystem

    Jörg Reinholz