Der Iniscan ist ein Tool, das dazu dient, die angegebene php.ini-Datei auf gängige Sicherheitspraktiken zu scannen und Ergebnisse zu melden. Derzeit ist es nur für die Verwendung in der Befehlszeile vorgesehen und meldet bei jedem Test die Ergebnisse für „Bestanden“ und „Nicht bestanden“ an die Anzeige zurück.
composer require psecio/iniscan
Die einzige aktuelle Abhängigkeit ist die Symfony-Konsole.
Darüber hinaus können Sie es mit der global
Funktionalität, die Composer bietet, außerhalb eines Projekts installieren. Aus jedem Verzeichnis können Sie Folgendes verwenden:
$ ./composer.phar global require psecio/iniscan
$ ~/.composer/vendor/bin/iniscan
Stellen Sie zunächst sicher, dass Sie „composer.phar install“ ausführen
curl -LSs https://box-project.github.io/box2/installer.php | php
php box.phar build
Dies sollte dazu führen, dass im Stammordner eine iniscan.phar-Datei erstellt wird. Anstatt in den Beispielen vendor/bin/iniscan
zu verwenden, verwenden Sie stattdessen ./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)
HINWEIS: Wenn der Scan ausgeführt wird und keine Einstellung in der angegebenen
php.ini
gefunden werden kann, wird ini_get verwendet, um die aktuelle Einstellung (möglicherweise die Standardeinstellung) abzurufen.
Iniscan bietet einige Befehle zum Überprüfen und Anzeigen des Inhalts Ihrer php.ini.
Der scan
Befehl wird am häufigsten verwendet – er führt die Regelprüfungen anhand der angegebenen INI-Datei durch und meldet die Ergebnisse zurück. Zum Beispiel:
vendor/bin/iniscan scan --path=/path/to/php.ini
Wenn der Pfad weggelassen wird, versucht iniscan , ihn anhand der aktuellen Konfiguration zu finden (ein „php -i“-Aufruf). Standardmäßig werden sowohl die bestandenen als auch die nicht bestandenen Ergebnisse der Prüfungen zurückgemeldet. Wenn Sie nur die Fehler zurückgeben möchten, können Sie das Argument fail-only
verwenden:
vendor/bin/iniscan scan --path=/path/to/php.ini --fail-only
Der scan
-Befehl gibt basierend auf den Ergebnissen einen Exit-Code zurück:
Sie können den einzigen Scan nach Regeln anfordern, die auf oder über einem Schwellenwert liegen:
vendor/bin/iniscan scan --path=/path/to/php.ini --threshold=ERROR
Es gibt 3 Ebenen, die Sie verwenden können:
Der Befehl show
listet den Inhalt Ihrer php.ini
-Datei mit etwas zusätzlicher Formatierung auf.
vendor/bin/iniscan show --path=/path/to/php.ini
Der Befehl list-tests
zeigt eine Liste der aktuell überprüften Regeln und des zugehörigen php.ini-Schlüssels an.
vendor/bin/iniscan list-tests
Standardmäßig gibt iniscan Informationen in einem für Menschen lesbaren Ergebnis direkt an die Konsole aus. Sie können auch andere Ausgabeformate angeben, die möglicherweise einfacher programmgesteuert zu analysieren sind (z. B. JSON). Verwenden Sie die Option --format
, um die Ausgabe zu ändern:
vendor/bin/iniscan show --path=/path/to/php.ini --format=json
Der Befehl list-tests
unterstützt auch die JSON-Ausgabe:
vendor/bin/iniscan list-tests --path=/path/to/php.ini --format=json
HINWEIS: Derzeit unterstützt nur der scan
Befehl alternative Ausgabeformate – Konsole, JSON, XML und HTML.
Die HTML-Ausgabeoption erfordert eine --output
Option des Verzeichnisses zum Schreiben der Datei:
vendor/bin/iniscan scan --format=html --output=/var/www/output
Das Ergebnis wird in eine Datei mit dem Namen etwa iniscan-output-20131212.html
geschrieben
Der Scanner unterstützt auch das Konzept von „Kontexten“ – Umgebungen, in denen Sie den Scanner möglicherweise ausführen. In Ihrer Entwicklungsumgebung kann es beispielsweise in Ordnung sein, display_errors
zu aktivieren. In der Produktion ist das allerdings eine schlechte Idee. Die Standardeinstellung des Scanners geht davon aus, dass Sie ihn in „prod“ verwenden. Daher verwendet er die strengsten Prüfungen, sofern Sie ihm nichts anderes mitteilen. Verwenden Sie dazu die context
:
vendor/bin/iniscan show --path=/path/to/php.ini --context=dev
In diesem Fall haben wir ihm mitgeteilt, dass wir in Dev laufen, sodass alles, was ausdrücklich „prod“ erwähnt, nicht ausgeführt wird.
Während der Scanner ausgeführt wird, vergleicht er den Konfigurationsschlüssel mit einer Liste veralteter Elemente. Wenn die Version mindestens der in den Regeln definierten Version entspricht, wird in der Ausgabe ein Fehler angezeigt. In der Konsole sehen Sie beispielsweise Folgendes:
WARNING: deprecated configuration items found:
-> register_globals
It's recommended that these settings be removed as they will be removed from future PHP versions.
Dies ist das Standardverhalten und muss nicht aktiviert werden.
@Autor Chris Cornutt [email protected]