Iniscan es una herramienta diseñada para escanear el archivo php.ini proporcionado en busca de prácticas de seguridad comunes e informar los resultados. Actualmente, solo se usa en la línea de comando e informa los resultados en la pantalla tanto para Pasa como para Falla en cada prueba.
composer require psecio/iniscan
La única dependencia actual es la consola Symfony.
Además, puede instalarlo fuera de un proyecto con la funcionalidad global
que proporciona Composer. Desde cualquier directorio puedes usar:
$ ./composer.phar global require psecio/iniscan
$ ~/.composer/vendor/bin/iniscan
Primero asegúrese de ejecutar la instalación de compositor.phar
curl -LSs https://box-project.github.io/box2/installer.php | php
php box.phar build
Esto debería dar como resultado la creación de un archivo iniscan.phar en la carpeta raíz. En lugar de utilizar vendor/bin/iniscan
en los ejemplos, utilice ./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)
NOTA: Cuando se ejecuta el escaneo, si no puede encontrar una configuración en el
php.ini
proporcionado, usará ini_get para extraer la configuración actual (posiblemente la predeterminada).
Iniscan ofrece algunos comandos para verificar y mostrar el contenido de su php.ini.
El comando scan
será el más utilizado: ejecuta las comprobaciones de reglas en el archivo ini dado e informa los resultados. Por ejemplo:
vendor/bin/iniscan scan --path=/path/to/php.ini
Si se omite la ruta, iniscan intentará encontrarla basándose en la configuración actual (una llamada "php -i"). De forma predeterminada, esto informa tanto los resultados correctos como los fallidos de las comprobaciones. Si desea devolver solo los errores, puede utilizar el argumento fail-only
:
vendor/bin/iniscan scan --path=/path/to/php.ini --fail-only
El comando scan
devolverá un código de salida según los resultados:
Puede solicitar el único análisis de reglas que estén en un umbral o por encima de él:
vendor/bin/iniscan scan --path=/path/to/php.ini --threshold=ERROR
Hay 3 niveles que puedes usar:
El comando show
enumera el contenido de su archivo php.ini
con un poco de formato adicional.
vendor/bin/iniscan show --path=/path/to/php.ini
El comando list-tests
muestra una lista de las reglas actuales que se están verificando y su clave php.ini relacionada.
vendor/bin/iniscan list-tests
De forma predeterminada , iniscan enviará información directamente a la consola en un resultado legible por humanos. También puede especificar otros formatos de salida que pueden ser más fáciles de analizar mediante programación (como JSON). Utilice la opción --format
para cambiar la salida:
vendor/bin/iniscan show --path=/path/to/php.ini --format=json
El comando list-tests
también admite salida JSON:
vendor/bin/iniscan list-tests --path=/path/to/php.ini --format=json
NOTA: Actualmente, solo el comando scan
admite formatos de salida alternativos: consola, JSON, XML y HTML.
La opción de salida HTML requiere una opción --output
del directorio para escribir el archivo:
vendor/bin/iniscan scan --format=html --output=/var/www/output
El resultado se escribirá en un archivo llamado algo así como iniscan-output-20131212.html
El escáner también admite el concepto de "contextos": entornos en los que puede estar ejecutando el escáner. Por ejemplo, en su entorno de desarrollo, puede estar bien tener display_errors
activado. Sin embargo, en producción esto es una mala idea. El valor predeterminado del escáner supone que lo estás usando en producción, por lo que utiliza las comprobaciones más estrictas a menos que le indiques lo contrario. Para hacerlo, use la opción de línea de comando context
:
vendor/bin/iniscan show --path=/path/to/php.ini --context=dev
En este caso, le hemos dicho que lo estamos ejecutando en desarrollo, por lo que cualquier cosa que mencione específicamente "prod" no se ejecuta.
A medida que se ejecuta el escáner, comparará la clave de configuración con una lista de elementos obsoletos. Si la versión es igual o posterior a la versión definida en las reglas, se mostrará un error en el resultado. Por ejemplo, en la consola, verías:
WARNING: deprecated configuration items found:
-> register_globals
It's recommended that these settings be removed as they will be removed from future PHP versions.
Este es el comportamiento predeterminado y no es necesario habilitarlo.
@autor Chris Cornutt [email protected]