シェルコマンドの実行
なぜ危険か
シェルに渡された入力に ; や | を入れると別のコマンドを追加でき、攻撃者にサーバーを乗っ取られます。値を厳密に検証し、すべての引数をエスケープしましょう。
system('ping -c 1 ' . $_GET['host']);
$host = $_GET['host'] ?? '';
if (!filter_var($host, FILTER_VALIDATE_IP)) {
exit('Invalid address');
}
system('ping -c 1 ' . escapeshellarg($host));
対策
シェル呼び出しは避けましょう。必要なら引数ごとに escapeshellarg() を使ってください。
コードを検査する
コードを検査する →
ファイルを貼り付けると、このルールに該当する行をすべて示します。