Iniscan est un outil conçu pour analyser le fichier php.ini donné à la recherche de pratiques de sécurité courantes et rendre compte des résultats. Actuellement, il est uniquement destiné à être utilisé sur la ligne de commande et renvoie les résultats à l'écran pour la réussite et l'échec de chaque test.
composer require psecio/iniscan
La seule dépendance actuelle est la console Symfony.
De plus, vous pouvez l'installer en dehors d'un projet avec la fonctionnalité global
fournie par Composer. Depuis n'importe quel répertoire, vous pouvez utiliser :
$ ./composer.phar global require psecio/iniscan
$ ~/.composer/vendor/bin/iniscan
Assurez-vous d’abord d’exécuter l’installation de composer.phar
curl -LSs https://box-project.github.io/box2/installer.php | php
php box.phar build
Cela devrait entraîner la création d'un fichier iniscan.phar dans le dossier racine. Au lieu d'utiliser vendor/bin/iniscan
dans les exemples, utilisez plutôt ./iniscan.phar
.
vendor/bin/iniscan scan --path=/path/to/php.ini
Results for /private/etc/php.ini:
============
Status | Severity | PHP Version | Key | Description
----------------------------------------------------------------------
PASS | ERROR | | session.use_cookies | Accepts cookies to manage sessions
PASS | ERROR | 4.3.0 | session.use_only_cookies | Must use cookies to manage sessions, don't accept session-ids in a link
1 passing
2 failure(s)
REMARQUE : lorsque l'analyse s'exécute, si elle ne trouve pas de paramètre dans le
php.ini
fourni, elle utilisera ini_get pour extraire le paramètre actuel (éventuellement celui par défaut).
Iniscan propose quelques commandes pour vérifier et afficher le contenu de votre php.ini.
La commande scan
sera la plus utilisée - elle exécute les vérifications des règles par rapport au fichier ini donné et rend compte des résultats. Par exemple:
vendor/bin/iniscan scan --path=/path/to/php.ini
Si le chemin est omis, iniscan essaiera de le trouver en fonction de la configuration actuelle (un appel "php -i"). Par défaut, cela renvoie les résultats de réussite et d’échec des vérifications. Si vous souhaitez renvoyer uniquement les échecs, vous pouvez utiliser l'argument fail-only
:
vendor/bin/iniscan scan --path=/path/to/php.ini --fail-only
La commande scan
renverra un code de sortie basé sur les résultats :
Vous pouvez demander la seule analyse des règles qui sont égales ou supérieures à un seuil :
vendor/bin/iniscan scan --path=/path/to/php.ini --threshold=ERROR
Il y a 3 niveaux que vous pouvez utiliser :
La commande show
répertorie le contenu de votre fichier php.ini
avec un peu de formatage supplémentaire.
vendor/bin/iniscan show --path=/path/to/php.ini
La commande list-tests
affiche une liste des règles en cours de vérification et leur clé php.ini associée.
vendor/bin/iniscan list-tests
Par défaut, iniscan affichera les informations directement sur la console dans un résultat lisible par l'homme. Vous pouvez également spécifier d'autres formats de sortie qui peuvent être plus faciles à analyser par programme (comme JSON). Utilisez l'option --format
pour modifier la sortie :
vendor/bin/iniscan show --path=/path/to/php.ini --format=json
la commande list-tests
prend également en charge la sortie JSON :
vendor/bin/iniscan list-tests --path=/path/to/php.ini --format=json
REMARQUE : actuellement, seule la commande scan
prend en charge d'autres formats de sortie : console, JSON, XML et HTML.
L'option de sortie HTML nécessite une option --output
du répertoire pour écrire le fichier :
vendor/bin/iniscan scan --format=html --output=/var/www/output
Le résultat sera écrit dans un fichier nommé quelque chose comme iniscan-output-20131212.html
Le scanner prend également en charge le concept de « contextes » - des environnements dans lesquels vous pouvez exécuter le scanner. Par exemple, dans votre environnement de développement, il peut être acceptable d'activer display_errors
. En production, cependant, c'est une mauvaise idée. La valeur par défaut du scanner suppose que vous l'utilisez en production, il utilise donc les contrôles les plus stricts, sauf indication contraire de votre part. Pour ce faire, utilisez l'option de ligne de commande context
:
vendor/bin/iniscan show --path=/path/to/php.ini --context=dev
Dans ce cas, nous lui avons dit que nous fonctionnions en développement, donc tout ce qui mentionne spécifiquement « prod » n'est pas exécuté.
Au fur et à mesure que l'analyseur s'exécute, il comparera la clé de configuration à une liste d'éléments obsolètes. Si la version est égale ou ultérieure à la version définie dans les règles, une erreur sera affichée dans la sortie. Par exemple, dans la console, vous verrez :
WARNING: deprecated configuration items found:
-> register_globals
It's recommended that these settings be removed as they will be removed from future PHP versions.
Il s'agit du comportement par défaut et il n'est pas nécessaire de l'activer.
@auteur Chris Cornutt [email protected]