mirror of
https://github.com/macintoshplus/doc-fr.git
synced 2026-03-24 00:42:20 +01:00
security sync with EN (#1361)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: c5d92fd7127e059d448d43ba339f19956f83b05a Maintainer: yannick Status: ready -->
|
||||
<!-- EN-Revision: 91570644fbbe4d23e79908e1a04c4c4d003fe587 Maintainer: yannick Status: ready -->
|
||||
<!-- Reviewed: yes -->
|
||||
|
||||
<chapter xml:id="security.filesystem" xmlns="http://docbook.org/ns/docbook">
|
||||
@@ -16,7 +16,7 @@
|
||||
<simpara>
|
||||
Puisque <acronym>PHP</acronym> a été fait pour permettre aux utilisateurs
|
||||
d'accéder aux fichiers, il est possible de créer un
|
||||
script <acronym>PHP</acronym> qui vous permet de lire des fichiers tels que /etc/password,
|
||||
script <acronym>PHP</acronym> qui vous permet de lire des fichiers tels que <filename>/etc/password</filename>,
|
||||
de modifier les connexions ethernet, lancer des impressions de documents,
|
||||
etc. Cela implique notamment que vous devez vous assurer que les fichiers
|
||||
manipulés par les scripts sont bien ceux qu'il faut.
|
||||
@@ -35,6 +35,7 @@
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
// Efface un fichier dans un dossier racine
|
||||
$username = $_POST['user_submitted_name'];
|
||||
$userfile = $_POST['user_submitted_filename'];
|
||||
@@ -43,6 +44,7 @@ $homedir = "/home/$username";
|
||||
unlink("$homedir/$userfile");
|
||||
|
||||
echo "Ce fichier a été effacé !";
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
@@ -59,7 +61,8 @@ echo "Ce fichier a été effacé !";
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
// efface un fichier n'importe où sur le disque dur,
|
||||
|
||||
// Efface un fichier n'importe où sur le disque dur,
|
||||
// où l'utilisateur PHP a accès. Si PHP a un accès root :
|
||||
$username = $_POST['user_submitted_name']; // "../etc"
|
||||
$userfile = $_POST['user_submitted_filename']; // "passwd"
|
||||
@@ -68,6 +71,7 @@ $homedir = "/home/$username"; // "/home/../etc"
|
||||
unlink("$homedir/$userfile"); // "/home/../etc/passwd"
|
||||
|
||||
echo "Ce fichier a été effacé !";
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
@@ -93,6 +97,7 @@ echo "Ce fichier a été effacé !";
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
// Efface un fichier sur le disque où l'utilisateur a le droit d'aller
|
||||
$username = $_SERVER['REMOTE_USER']; // utilisation d'un mécanisme d'identification
|
||||
$userfile = basename($_POST['user_submitted_filename']);
|
||||
@@ -105,6 +110,7 @@ if (file_exists($filepath) && unlink($filepath)) {
|
||||
} else {
|
||||
$logstring = "Échec lors de l'effacement de $filepath\n";
|
||||
}
|
||||
|
||||
$fp = fopen("/home/logging/filedelete.log", "a");
|
||||
fwrite($fp, $logstring);
|
||||
fclose($fp);
|
||||
@@ -124,6 +130,7 @@ echo htmlentities($logstring, ENT_QUOTES);
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
$username = $_SERVER['REMOTE_USER']; // utilisation d'un mécanisme d'identification
|
||||
$userfile = $_POST['user_submitted_filename'];
|
||||
$homedir = "/home/$username";
|
||||
@@ -134,7 +141,8 @@ if (!ctype_alnum($username) || !preg_match('/^(?:[a-z0-9_-]|\.(?!\.))+$/iD', $us
|
||||
die("Mauvais utilisateur/nom de fichier");
|
||||
}
|
||||
|
||||
//etc...
|
||||
// etc...
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
@@ -166,10 +174,11 @@ if (!ctype_alnum($username) || !preg_match('/^(?:[a-z0-9_-]|\.(?!\.))+$/iD', $us
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
$file = $_GET['file']; // "../../etc/passwd\0"
|
||||
if (file_exists('/home/wwwrun/'.$file.'.php')) {
|
||||
if (file_exists('/home/wwwrun/' . $file . '.php')) {
|
||||
// file_exists retournera true sachant que le fichier /home/wwwrun/../../etc/passwd existe
|
||||
include '/home/wwwrun/'.$file.'.php';
|
||||
include '/home/wwwrun/' . $file . '.php';
|
||||
// le fichier /etc/passwd sera inclu
|
||||
}
|
||||
?>
|
||||
@@ -186,6 +195,7 @@ if (file_exists('/home/wwwrun/'.$file.'.php')) {
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
$file = $_GET['file'];
|
||||
|
||||
// Whitelisting possible values
|
||||
@@ -193,11 +203,12 @@ switch ($file) {
|
||||
case 'main':
|
||||
case 'foo':
|
||||
case 'bar':
|
||||
include '/home/wwwrun/include/'.$file.'.php';
|
||||
include '/home/wwwrun/include/' . $file . '.php';
|
||||
break;
|
||||
default:
|
||||
include '/home/wwwrun/include/main.php';
|
||||
}
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
|
||||
Reference in New Issue
Block a user