Iniscan เป็นเครื่องมือที่ออกแบบมาเพื่อสแกนไฟล์ php.ini ที่กำหนดเพื่อดูแนวทางปฏิบัติด้านความปลอดภัยทั่วไปและรายงานผลลัพธ์กลับ ขณะนี้ใช้ได้เฉพาะบนบรรทัดคำสั่งและรายงานผลลัพธ์กลับไปยังจอแสดงผลทั้งผ่านและไม่ผ่านในการทดสอบแต่ละครั้ง
composer require psecio/iniscanการพึ่งพาในปัจจุบันเพียงอย่างเดียวคือคอนโซล Symfony
นอกจากนี้ คุณยังสามารถติดตั้งนอกโปรเจ็กต์ได้ด้วยฟังก์ชันการทำงาน global ที่ Composer มีให้ จากไดเร็กทอรีใด ๆ ที่คุณสามารถใช้:
$ ./composer.phar global require psecio/iniscan
$ ~/.composer/vendor/bin/iniscan
ขั้นแรกตรวจสอบให้แน่ใจว่าคุณได้รันการติดตั้ง composer.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.
นี่เป็นพฤติกรรมเริ่มต้นและไม่จำเป็นต้องเปิดใช้งาน
@ผู้เขียนคริส Cornutt [email protected]