PHP escapeshellarg

投稿日 by Iwao

以前から気にはなっていた PHP の escapeshellarg を調べてみた.


次の様なコードがうまくない.

<?php
	$param  = ($_REQUEST['input']) ;
	$cmd_to = "cal " . $param ;
	system	( $cmd_to ) ;
	?>

次の様な入力を意図しているが,
…/cal/?input=2020
cal 2020
後ろに次のコマンドを付加されるとうまくない.
…/cal/?input=2020;ls -l
cal 2020 ; ls -l
cal 2020 が表示された後 ls -l が動作している.
コマンドインジェクション」と呼ぶらしく,検索するといろいろと出てくる.


コマンドの引数にあたる部分に escapeshellarg を使用するか,$param をチェックするする必要がある.

	$cmd_to  = "cal " . escapeshellarg ( $param ) ;
この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ

  • カテゴリー:


コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください