6.15.1 実行許可コマンド定義ファイル
(1) 形式
-
チェック対象文字列を受理する正規表現を,改行文字区切りで記述します。
-
使用できる文字コードはUTF-8です。
-
空文字列行は無視されます。
-
正規表現の記述仕様は,java.util.regex.Patternクラスの仕様に従います。
(2) 機能
コマンドアダプタで実行できる外部コマンドとコマンドライン引数の組み合わせを正規表現で設定します。
コマンドアダプタへのリクエスト時,要求電文で指定された外部コマンドと各コマンドライン引数をそれぞれ半角空白で結合した文字列に対して,実行許可コマンド定義ファイルに指定した正規表現で判定します。
実行許可コマンド定義ファイルは次の手順で作成してください。
-
コマンドアダプタで実行を許可するファイルパス,および指定可能とするコマンドライン引数の仕様をまとめます。
-
チェック対象文字列を受理する正規表現を作成して,ファイルに記載します。
-
作成した実行許可コマンド定義ファイルは,任意の場所に任意のファイル名で保存します。
- 注意事項
-
実行許可コマンド定義ファイルを有効にするには,コマンドアダプタ実行環境プロパティファイルのadpcmd.config.command.allow-file-pathプロパティに保存先のファイルパスを指定してください。
(3) 記述例
実行許可コマンド定義ファイルの記述例を次に示します。
/bin/ls(?: -l)? /usr/share/product/bin/[^ /]+.sh[^&|<>]*
(4) 注意事項
外部コマンドやコマンドライン引数の部分の受理正規表現は適切に設定してください。特に,システム設計時に次に示す前提条件がある場合は,システム管理者が意図しないプロセスの起動を抑止することで,セキュリティのリスクを回避できます。
-
ビジネスプロセスを介さないでアダプタを直接呼び出せる状態(標準受付起動時)である
-
ビジネスプロセス上で,エンドユーザのリクエスタからの値が直接コマンドアダプタの要求電文にマッピングされている
- 参考
-
不適切な正規表現の一例を次に示します。
-
任意文字列を受理する表現(例えば,.+や.*など)
意図しないプロセスの起動を防げません。
-
シェルやコマンドプロンプトで実行制御の意味を持つ特殊な文字(例えば,&,|,>,<など)
コマンドライン引数内に意図しないプロセスを指定された場合に起動を防げません。
-