Iniscan은 일반적인 보안 관행을 찾기 위해 주어진 php.ini 파일을 검사하고 결과를 다시 보고하도록 설계된 도구입니다. 현재는 명령줄에서만 사용되며 각 테스트의 합격 및 실패에 대한 결과를 디스플레이에 다시 보고합니다.
composer require psecio/iniscan
현재 유일한 종속성은 Symfony 콘솔입니다.
또한 Composer가 제공하는 global
기능을 사용하여 프로젝트 외부에 설치할 수도 있습니다. 모든 디렉토리에서 다음을 사용할 수 있습니다.
$ ./composer.phar global require psecio/iniscan
$ ~/.composer/vendor/bin/iniscan
먼저 작곡가.phar 설치를 실행했는지 확인하십시오.
curl -LSs https://box-project.github.io/box2/installer.php | php
php box.phar build
그러면 루트 폴더에 iniscan.phar 파일이 생성됩니다. 예제에서는 vendor/bin/iniscan
사용하는 대신 ./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)
참고: 스캔이 실행될 때 제공된
php.ini
에서 설정을 찾을 수 없으면 ini_get을 사용하여 현재 설정(기본값일 수 있음)을 가져옵니다.
Iniscan은 php.ini의 내용을 확인하고 표시하기 위한 몇 가지 명령을 제공합니다.
scan
명령이 가장 많이 사용됩니다. 주어진 ini 파일에 대해 규칙 검사를 실행하고 결과를 다시 보고합니다. 예를 들어:
vendor/bin/iniscan scan --path=/path/to/php.ini
경로가 생략되면 iniscan은 현재 구성("php -i" 호출)을 기반으로 경로를 찾으려고 시도합니다. 기본적으로 이는 검사의 통과 및 실패 결과를 모두 보고합니다. 실패만 반환하려면 fail-only
인수를 사용할 수 있습니다.
vendor/bin/iniscan scan --path=/path/to/php.ini --fail-only
scan
명령은 결과에 따라 종료 코드를 반환합니다.
임계값 이상인 규칙에 대해서만 검사를 요청할 수 있습니다.
vendor/bin/iniscan scan --path=/path/to/php.ini --threshold=ERROR
사용할 수 있는 레벨은 3가지입니다:
show
명령은 약간의 추가 형식을 사용하여 php.ini
파일의 내용을 나열합니다.
vendor/bin/iniscan show --path=/path/to/php.ini
list-tests
명령은 현재 확인 중인 규칙 목록과 관련 php.ini 키를 표시합니다.
vendor/bin/iniscan list-tests
기본적으로 iniscan은 사람이 읽을 수 있는 결과로 콘솔에 직접 정보를 출력합니다. 프로그래밍 방식으로 구문 분석하기가 더 쉬운 다른 출력 형식(예: JSON)을 지정할 수도 있습니다. --format
옵션을 사용하여 출력을 변경합니다.
vendor/bin/iniscan show --path=/path/to/php.ini --format=json
list-tests
명령은 JSON 출력도 지원합니다.
vendor/bin/iniscan list-tests --path=/path/to/php.ini --format=json
참고: 현재는 scan
명령만 대체 출력 형식(콘솔, JSON, XML 및 HTML)을 지원합니다.
HTML 출력 옵션에는 파일을 쓰려면 디렉터리의 --output
옵션이 필요합니다.
vendor/bin/iniscan scan --format=html --output=/var/www/output
결과는 iniscan-output-20131212.html
과 같은 이름의 파일에 기록됩니다.
스캐너는 스캐너를 실행할 수 있는 환경인 "컨텍스트" 개념도 지원합니다. 예를 들어 개발 환경에서는 display_errors
켜도 괜찮을 수 있습니다. 그러나 프로덕션에서는 이는 나쁜 생각입니다. 스캐너의 기본값은 사용자가 프로덕션에서 사용한다고 가정하므로 달리 지정하지 않는 한 가장 엄격한 검사를 사용합니다. 이렇게 하려면 context
명령줄 옵션을 사용하세요.
vendor/bin/iniscan show --path=/path/to/php.ini --context=dev
이 경우 우리는 dev에서 실행 중이라고 말했으므로 "prod"를 구체적으로 언급하는 것은 실행되지 않습니다.
스캐너가 실행되면 구성 키를 더 이상 사용되지 않는 항목 목록과 비교합니다. 버전이 규칙에 정의된 버전 이상인 경우 출력에 오류가 표시됩니다. 예를 들어 콘솔에는 다음이 표시됩니다.
WARNING: deprecated configuration items found:
-> register_globals
It's recommended that these settings be removed as they will be removed from future PHP versions.
이는 기본 동작이므로 활성화할 필요가 없습니다.
@저자 크리스 코넛 [email protected]