O Iniscan é uma ferramenta projetada para verificar o arquivo php.ini em busca de práticas de segurança comuns e relatar os resultados. Atualmente, ele deve ser usado apenas na linha de comando e reporta os resultados no display para Aprovado e Reprovado em cada teste.
composer require psecio/iniscan
A única dependência atual é o console Symfony.
Além disso, você pode instalá-lo fora de um projeto com a funcionalidade global
fornecida pelo Composer. De qualquer diretório você pode usar:
$ ./composer.phar global require psecio/iniscan
$ ~/.composer/vendor/bin/iniscan
Primeiro certifique-se de executar o compositor.phar install
curl -LSs https://box-project.github.io/box2/installer.php | php
php box.phar build
Isso deve resultar na criação de um arquivo iniscan.phar na pasta raiz. Em vez de usar vendor/bin/iniscan
nos exemplos, use ./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: Quando a varredura for executada, se não conseguir encontrar uma configuração no
php.ini
fornecido, ela usará ini_get para obter a configuração atual (possivelmente o padrão).
O Iniscan oferece alguns comandos para verificar e mostrar o conteúdo do seu php.ini.
O comando scan
será o mais usado - ele executa as verificações de regras no arquivo ini fornecido e relata os resultados. Por exemplo:
vendor/bin/iniscan scan --path=/path/to/php.ini
Se o caminho for omitido, o iniscan tentará encontrá-lo com base na configuração atual (uma chamada "php -i"). Por padrão, isso reporta os resultados de aprovação e reprovação das verificações. Se quiser retornar apenas as falhas, você pode usar o argumento fail-only
:
vendor/bin/iniscan scan --path=/path/to/php.ini --fail-only
O comando scan
retornará um código de saída com base nos resultados:
Você pode solicitar a única verificação de regras que estejam dentro ou acima de um limite:
vendor/bin/iniscan scan --path=/path/to/php.ini --threshold=ERROR
Existem 3 níveis que você pode usar:
O comando show
lista o conteúdo do seu arquivo php.ini
com um pouco de formatação extra.
vendor/bin/iniscan show --path=/path/to/php.ini
O comando list-tests
mostra uma lista das regras atuais que estão sendo verificadas e suas chaves php.ini relacionadas.
vendor/bin/iniscan list-tests
Por padrão, o iniscan enviará informações diretamente para o console em um resultado legível por humanos. Você também pode especificar outros formatos de saída que podem ser mais fáceis de analisar programaticamente (como JSON). Use a opção --format
para alterar a saída:
vendor/bin/iniscan show --path=/path/to/php.ini --format=json
o comando list-tests
também suporta saída JSON:
vendor/bin/iniscan list-tests --path=/path/to/php.ini --format=json
NOTA: Atualmente, apenas o comando scan
suporta formatos de saída alternativos – console, JSON, XML e HTML.
A opção de saída HTML requer uma opção --output
do diretório para gravar o arquivo:
vendor/bin/iniscan scan --format=html --output=/var/www/output
O resultado será gravado em um arquivo chamado algo como iniscan-output-20131212.html
O scanner também suporta o conceito de "contextos" - ambientes nos quais você pode estar executando o scanner. Por exemplo, em seu ambiente de desenvolvimento, pode ser aceitável ter display_errors
ativado. Na produção, entretanto, isso é uma má ideia. O padrão do scanner pressupõe que você o esteja usando em produção, portanto, ele usa as verificações mais rigorosas, a menos que você informe o contrário. Para fazer isso, use a opção de linha de comando context
:
vendor/bin/iniscan show --path=/path/to/php.ini --context=dev
Nesse caso, dissemos que estamos executando em dev, portanto, qualquer coisa que mencione especificamente "prod" não será executada.
À medida que o scanner é executado, ele compara a chave de configuração com uma lista de itens obsoletos. Se a versão for igual ou posterior à versão definida nas regras, um erro será mostrado na saída. Por exemplo, no console, você veria:
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 é o comportamento padrão e não precisa ser ativado.
@autor Chris Cornutt [email protected]