Iniscan adalah alat yang dirancang untuk memindai file php.ini yang diberikan untuk praktik keamanan umum dan melaporkan kembali hasilnya. Saat ini hanya untuk digunakan pada baris perintah dan melaporkan hasilnya kembali ke tampilan untuk Lulus dan Gagal pada setiap pengujian.
composer require psecio/iniscan
Satu-satunya ketergantungan saat ini adalah konsol Symfony.
Selain itu, Anda dapat menginstalnya di luar proyek dengan fungsionalitas global
yang disediakan Composer. Dari direktori mana pun Anda dapat menggunakan:
$ ./composer.phar global require psecio/iniscan
$ ~/.composer/vendor/bin/iniscan
Pertama pastikan Anda menjalankan composer.phar install
curl -LSs https://box-project.github.io/box2/installer.php | php
php box.phar build
Ini akan menghasilkan file iniscan.phar yang dibuat di folder root. Daripada menggunakan vendor/bin/iniscan
dalam contoh, gunakan ./iniscan.phar
saja.
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)
CATATAN: Saat pemindaian berjalan, jika tidak dapat menemukan pengaturan di
php.ini
yang diberikan, pemindaian akan menggunakan ini_get untuk menarik pengaturan saat ini (mungkin default).
Iniscan menawarkan beberapa perintah untuk memeriksa dan menampilkan konten php.ini Anda.
Perintah scan
akan menjadi yang paling sering digunakan - perintah ini menjalankan pemeriksaan aturan terhadap file ini yang diberikan dan melaporkan kembali hasilnya. Misalnya:
vendor/bin/iniscan scan --path=/path/to/php.ini
Jika jalurnya dihilangkan, iniscan akan mencoba menemukannya berdasarkan konfigurasi saat ini (panggilan "php -i"). Secara default, ini melaporkan kembali hasil pemeriksaan yang lulus dan gagal. Jika Anda hanya ingin mengembalikan kegagalan, Anda dapat menggunakan argumen fail-only
:
vendor/bin/iniscan scan --path=/path/to/php.ini --fail-only
Perintah scan
akan mengembalikan kode keluar berdasarkan hasil:
Anda dapat meminta satu-satunya pemindaian untuk aturan yang berada pada atau di atas ambang batas:
vendor/bin/iniscan scan --path=/path/to/php.ini --threshold=ERROR
Ada 3 level yang dapat Anda gunakan:
Perintah show
mencantumkan isi file php.ini
Anda dengan sedikit format tambahan.
vendor/bin/iniscan show --path=/path/to/php.ini
Perintah list-tests
menampilkan daftar aturan yang sedang diperiksa dan kunci php.ini terkait.
vendor/bin/iniscan list-tests
Secara default iniscan akan menampilkan informasi langsung ke konsol dalam hasil yang dapat dibaca manusia. Anda juga dapat menentukan format keluaran lain yang mungkin lebih mudah diurai secara terprogram (seperti JSON). Gunakan opsi --format
untuk mengubah output:
vendor/bin/iniscan show --path=/path/to/php.ini --format=json
perintah list-tests
juga mendukung keluaran JSON:
vendor/bin/iniscan list-tests --path=/path/to/php.ini --format=json
CATATAN: Saat ini, hanya perintah scan
yang mendukung format output alternatif - konsol, JSON, XML dan HTML.
Opsi keluaran HTML memerlukan opsi --output
pada direktori untuk menulis berkas:
vendor/bin/iniscan scan --format=html --output=/var/www/output
Hasilnya akan ditulis ke file bernama iniscan-output-20131212.html
Pemindai juga mendukung konsep "konteks" - lingkungan tempat Anda menjalankan pemindai. Misalnya, di lingkungan pengembangan Anda, display_errors
mungkin boleh diaktifkan. Namun dalam produksi, ini adalah ide yang buruk. Default pemindai mengasumsikan Anda menggunakannya di prod, jadi pemindai menggunakan pemeriksaan paling ketat kecuali Anda menyatakan sebaliknya. Untuk melakukannya, gunakan opsi baris perintah context
:
vendor/bin/iniscan show --path=/path/to/php.ini --context=dev
Dalam hal ini, kami telah memberi tahu bahwa kami menjalankannya di dev, jadi apa pun yang secara spesifik menyebutkan "prod" tidak akan dijalankan.
Saat pemindai berjalan, pemindai akan membandingkan kunci konfigurasi dengan daftar item yang tidak digunakan lagi. Jika versinya sama atau lebih baru dari versi yang ditentukan dalam aturan, kesalahan akan ditampilkan di output. Misalnya, di konsol, Anda akan melihat:
WARNING: deprecated configuration items found:
-> register_globals
It's recommended that these settings be removed as they will be removed from future PHP versions.
Ini adalah perilaku default dan tidak perlu diaktifkan.
@penulis Chris Cornutt [email protected]