ホームページ  >  記事  >  バックエンド開発  >  PHP セキュリティ コマンド インジェクション

PHP セキュリティ コマンド インジェクション

黄舟
黄舟オリジナル
2017-02-21 09:12:511505ブラウズ



コマンドインジェクション

システム コマンドの使用は、特にリモート データを使用して実行するコマンドを構築しようとしている場合、危険な操作です。汚染されたデータが使用されると、コマンド インジェクションの脆弱性が発生します。

Exec() はシェルコマンドを実行するために使用される関数です。これは実行を返し、コマンド出力の最後の行を返しますが、2 番目の引数として配列を指定すると、出力の各行が配列内の要素として格納されます。使用法は次のとおりです:

  <?php
 
  $last = exec(&#39;ls&#39;, $output, $return);
 
  print_r($output);
  echo "Return [$return]";
 
  ?>


ls コマンドをシェルで手動で実行すると次の出力が生成されると仮定します。れーれー


上記の例のメソッドを介して exec() で実行すると、出力結果は次のようになります。 シェル コマンドを実行するこの方法は便利で便利ですが、この便利さは重大なリスクをもたらします。汚染されたデータを使用してコマンド文字列を作成すると、攻撃者は任意のコマンドを実行できます。

可能であれば、シェル コマンドの使用を避けることをお勧めします。使用する場合は、コマンド文字列の構築に使用されたデータを必ずフィルターし、出力をエスケープしてください。 シェル コマンドを実行する方法は数多くありますが、実行する文字列を作成する際には、フィルター処理されエスケープされたデータのみが許可されるようにすることが重要です。注意が必要な他の同様の関数には、 passthru() などがあります。 Popen( )、shell_exec( )、および system( )。繰り返しになりますが、可能であればすべてのシェル コマンドの使用を避けることをお勧めします。

上記は PHP セキュリティ コマンド インジェクションの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。