<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/security.cgi-bin.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'security.cgi-bin.doc-root.php',
    1 => 'Fall 3: doc_root oder user_dir festlegen',
    2 => 'Fall 3: doc_root oder user_dir festlegen',
  ),
  'up' => 
  array (
    0 => 'security.cgi-bin.php',
    1 => 'Installiert als CGI-Version',
  ),
  'prev' => 
  array (
    0 => 'security.cgi-bin.force-redirect.php',
    1 => 'Fall 2: --enable-force-cgi-redirect benutzen',
  ),
  'next' => 
  array (
    0 => 'security.cgi-bin.shell.php',
    1 => 'Fall 4: PHP-Parser au&szlig;erhalb des Webverzeichnisbaums',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'security/cgi-bin.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="security.cgi-bin.doc-root" class="sect1">
    <h2 class="title">Fall 3: doc_root oder user_dir festlegen</h2>
    <p class="simpara">
     Aktiven Inhalt, wie beispielsweise Skripts und ausführbare
     Dateien, in den Dokumentverzeichnissen des Webservers abzulegen,
     wird manchmal als unsichere Methode angesehen.
     Wenn, beispielsweise aufgrund von Konfigurationsfehlern, die
     Skripte nicht ausgeführt, sondern als reguläre HTML-Dokumente
     angezeigt werden, kann dies ein Durchsickern von geistigem Eigentum
     und sicherheitsrelevanter Informationen wie Passwörtern zur Folge
     haben. Deshalb ziehen es viele Systemadministratoren vor, eine
     zweite Verzeichnisstruktur für Skripte einzurichten, auf die nur
     durch das PHP-CGI zugegriffen werden kann. Diese werden dann stets
     interpretiert und nicht angezeigt.
    </p>
    <p class="simpara">
     Auch wenn die Methode zum sichergestellten Verhindern einer Umleitung
     von Anfragen (wie im vorangegangenen Abschnitt beschrieben) nicht
     verfügbar ist, ist es notwendig, ein
     <a href="ini.core.php#ini.doc-root" class="link">doc_root</a> für Skripte zusätzlich zum
     Web-Dokumentenverzeichnis einzurichten.
    </p>
    <p class="simpara">
     Sie können das PHP-Skriptverzeichnis durch die Direktive
     <a href="ini.core.php#ini.doc-root" class="link">doc_root</a> in der
     <a href="configuration.file.php" class="link">Konfigurationsdatei</a>
     festlegen, oder Sie setzen die Umgebungsvariable
     <var class="envar">PHP_DOCUMENT_ROOT</var>. Wenn sie gesetzt ist, wird die
     <abbr title="Common Gateway Interface">CGI</abbr>-Version von PHP den Namen der zu öffnenden Datei
     stets aus <code class="parameter">doc_root</code> und der Pfadinformation der
     Anfrage zusammensetzen, sodass man sicher sein kann, dass außerhalb
     dieses Verzeichnisses keine Skripte ausgeführt werden (außer
     <code class="parameter">user_dir</code>, siehe unten).
    </p>
    <p class="simpara">
     Eine weitere hier nützliche Option ist <a href="ini.core.php#ini.user-dir" class="link">user_dir</a>. Wenn
     <code class="parameter">user_dir</code> nicht gesetzt ist, hat nur
     <code class="parameter">doc_root</code> Einfluss auf die zu öffnende Datei.
     Der Aufruf einer URL wie <var class="filename">http://my.host/~user/doc.php</var> hat nicht zum
     Ergebnis, dass eine Datei im Heimatverzeichnis des Benutzers geöffnet
     wird, sondern eine Datei namens
     <var class="filename">~user/doc.php</var> unterhalb von
     <code class="parameter">doc_root</code>. (Ja, ein Verzeichnisname, der mit einer
     Tilde anfängt [<code class="literal">~</code>].)
    </p>
    <p class="simpara">
     Ist <code class="parameter">user_dir</code> beispielsweise auf
     <var class="filename">public_php</var> gesetzt, wird eine Anfrage wie
     <var class="filename">http://my.host/~user/doc.php</var> eine Datei
     namens <var class="filename">doc.php</var> im Verzeichnis
     <var class="filename">public_php</var> im Heimatverzeichnis des
     Benutzers öffnen. Wenn das Heimatverzeichnis des Benutzers
     <var class="filename">/home/user</var> ist, so ist die ausgeführte
     Datei <var class="filename">/home/user/public_php/doc.php</var>.
    </p>
    <p class="simpara">
     Die <code class="parameter">user_dir</code>-Expansion erfolgt ohne Berücksichtigung
     der <code class="parameter">doc_root</code>-Einstellung. So können Zugriffe
     auf die Dokumenten- und Benutzerverzeichnisse separat gesteuert werden.
    </p>
   </div><?php manual_footer($setup); ?>