<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/security.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'security.apache.php',
    1 => 'Install&eacute; en tant que module Apache',
    2 => 'Install&eacute; en tant que module Apache',
  ),
  'up' => 
  array (
    0 => 'security.php',
    1 => 'S&eacute;curit&eacute;',
  ),
  'prev' => 
  array (
    0 => 'security.cgi-bin.shell.php',
    1 => 'Cas 4 : Ex&eacute;cutable PHP &agrave; l\'ext&eacute;rieur de l\'arborescence du serveur',
  ),
  'next' => 
  array (
    0 => 'security.sessions.php',
    1 => 'S&eacute;curit&eacute; des Sessions',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'security/apache.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="security.apache" class="chapter">
 <h1 class="title">Installé en tant que module Apache</h1>

 <p class="simpara">
  Lorsque <abbr title="PHP: Hypertext Preprocessor">PHP</abbr> est utilisé en tant que module Apache, celui-ci hérite des
  permissions accordées à l&#039;utilisateur faisant tourner Apache (par défaut,
  l&#039;utilisateur &quot;nobody&quot;). Ceci a plusieurs impacts sur la sécurité et
  les autorisations.
  Par exemple, lors de l&#039;utilisation de <abbr title="PHP: Hypertext Preprocessor">PHP</abbr> pour accéder à une base de données, à
  moins que la base n&#039;ait un système de droits d&#039;accès interne, il faudra
  la rendre accessible à l&#039;utilisateur &quot;nobody&quot;. Cela signifie qu&#039;un
  script mal intentionné peut accéder à la base et la modifier, sans
  identification. Il est même possible qu&#039;un robot accède à une page
  d&#039;administration, et détruise toutes les bases de données. Il est possible de se protéger
  contre cela avec les autorisations Apache, ou définir un
  modèle d&#039;accès propre en utilisant LDAP, des fichiers <var class="filename">.htaccess</var>, etc. et inclure ce code
  dans les scripts <abbr title="PHP: Hypertext Preprocessor">PHP</abbr>.
 </p>
 <p class="simpara">
  Souvent, lorsqu&#039;on a établi les droits de l&#039;utilisateur <abbr title="PHP: Hypertext Preprocessor">PHP</abbr> (ici,
  l&#039;utilisateur Apache) pour minimiser les risques, on s&#039;aperçoit que
  <abbr title="PHP: Hypertext Preprocessor">PHP</abbr> ne peut plus écrire de fichiers dans les répertoires des utilisateurs.
  Ou encore, qu&#039;il ne peut plus accéder à, ou modifier, une base de données privée.
  En somme, les sécurités mises en place empêchent à la fois l&#039;écriture de bons et de mauvais fichiers,
  en même temps que les bonnes et mauvaises opérations en bases de données.
 </p>
 <p class="simpara">
  Arrivé là, une erreur de sécurité fréquente est de donner à l&#039;utilisateur Apache
  les droits de superadministrateur (&quot;root&quot;), ou d&#039;accroître les possibilités d&#039;Apache
  d&#039;une quelconque autre façon.
 </p>
 <p class="simpara">
  Donner de telles permissions à l&#039;utilisateur Apache est extrêmement
  dangereux, et pourrait compromettre tout le système ; en conséquence, l&#039;utilisation de sudo,
  de chroot, ou de toute autre solution permettant de fonctionner en tant que superadministrateur
  (&quot;root&quot;), ne devrait pas être envisagée par toute personne qui ne soit pas experte en sécurité.
 </p>
 <p class="simpara">
  Il existe des solutions plus simples. En utilisant
  <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a>, il est possible de contrôler et restreindre
  les dossiers qui seront accessibles par <abbr title="PHP: Hypertext Preprocessor">PHP</abbr>. Il est également possible de
  créer des aires de restrictions Apache, pour limiter les activités
  en provenance du web à des fichiers qui ne soient en rapport ni avec des utilisateurs,
  ni avec le système.
 </p>
</div>
<?php manual_footer($setup); ?>