Iniscan هي أداة مصممة لفحص ملف php.ini المحدد بحثًا عن ممارسات الأمان الشائعة والإبلاغ عن النتائج. حاليًا، يتم استخدامه فقط في سطر الأوامر ويقوم بإبلاغ النتائج إلى الشاشة لكل من النجاح والرسوب في كل اختبار.
composer require psecio/iniscan
التبعية الحالية الوحيدة هي وحدة تحكم Symfony.
بالإضافة إلى ذلك، يمكنك تثبيته خارج المشروع باستخدام الوظيفة global
التي يوفرها Composer. من أي دليل يمكنك استخدام:
$ ./composer.phar global require psecio/iniscan
$ ~/.composer/vendor/bin/iniscan
تأكد أولاً من تشغيل برنامج Composer.phar install
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
في هذه الحالة، أخبرنا أننا نعمل في مرحلة التطوير، لذا لا يتم تنفيذ أي شيء يذكر "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]