文章轉自:learnku.com/php/t/27016
php
在 PHP 安全測試中最單調乏味的任務之一就是檢查不安全的 PHP 配置項。做爲一名 PHP 安全海報的繼承者,咱們建立了一個腳本用來幫助系統管理員如同安全專家同樣儘量快速且全面地評估 php.ini 和相關主題的狀態。在下文中,該腳本被稱做「PHP 安全配置項檢查器」,或者 pcc。html
github.com/sektioneins…laravel
CLI:簡單調用 php phpconfigcheck.php
。而後,添加參數 -a
以便更好的查看隱藏結果, -h
以 HTML 格式輸出, -j
以 JSON 格式輸出.git
WEB: 複製這個腳本文件到你的服務器上的任意一個可訪問目錄,好比 root 目錄。參見下面的「防禦措施」。github
在非 CLI 模式下默認輸出 HTML 格式。能夠經過修改設置環境變量PCC_OUTPUT_TYPE=text
或者 PCC_OUTPUT_TYPE=json
改變這個行爲。web
一些測試用例默認是被隱藏的,特別是skipped、ok和 unknown/untested這些。要顯示所有結果,能夠用 phpconfigcheck.php?showall=1
,但這並不適用於 JSON 輸出,它默認返回所有結果。 在 WEB 模式下控制輸出格式用 phpconfigcheck.php?format=...
, format
的值能夠是 text
, html
或者 json
中的一個,例如: phpconfigcheck.php?format=text
。 format
參數優先於 PCC_OUTPUT_TYPE。apache
大多數狀況下,最好是本身來關注與安全性相關的問題好比PHP的配置。腳本已實現下列保障措施:json
mtime檢查:腳本在非CLI環境中只能工做兩天。能夠經過touch phpconfigcheck.php
或者將腳本文件再次複製到你的服務器(例如經過SCP)來從新進行mtime檢查。能夠經過設置環境量: PCC_DISABLE_MTIME=1
,好比在apache的.htaccess
文件中設置SetEnv PCC_DISABLE_MTIME 1
來禁用mtime檢查。安全
來源IP檢查:默認狀況下,只有localhost (127.0.0.1 和 ::1)才能訪問這個腳本。其餘主機能夠經過在PCC_ALLOW_IP
中添加IP地址或者通配符表達式的方式來訪問腳本,好比在.htaccess
文件中設置SetEnv PCC_ALLOW_IP 10.0.0.*
。你還能夠選擇經過SSH端口轉發訪問您的web服務器, 好比 ssh -D
或者 ssh -L
。服務器
能夠經過github下載第一個完整的開發版: github.com/sektioneins…
若是有好的建議或者遇到bug請給咱們提issue:
HTML輸出的列表是根據問題嚴重性排序的,經過顏色代碼的形式列出了全部建議。列表頂部的狀態行會顯示問題的數量。
這個工具只能用來支持你搭建一個安全的PHP環境,作不了其餘事。你的設置、軟件或任何相關的配置可能仍然是脆弱的,即便該工具的輸出代表狀況並不是如此。