PHPスクリプトから呼び出してpdftk (pdftツールキット)を使用することに興味があります。exec()
その機能を利用したいと考えています。コマンドは次の形式に従います。
pdftk [form_file] fill_form [data_file] output [output_file] flatten
このコマンドは、フォーム PDF ファイル ( form_file
) を取得し、FDF データを挿入しdata_file
、フォームをフラットにして として保存しoutput_file
ます。
次のような関数を介してこのコマンドの実行を保護するために私が考えていることは次のとおりですexec()
- ディレクトリ名とファイル名はユーザー定義ではありません。ディレクトリ名とファイル名は、サニタイズされた識別子文字列に基づいて生成され、英数字、ダッシュ、アンダースコア、およびピリオドのみが含まれます。識別子文字列は、制限された実用的な長さになります。
- 引数 (ファイル名) は
escapeshellarg()
、コマンドに連結される前に渡されます (ただし、進行するステップに脆弱性がない場合、これはおそらく不要です)。 - コマンド全体が渡され
escapeshellcmd()
ます。
このコマンドの実行に関して、セキュリティ上の脆弱性を見落としていませんか? (今考えられる唯一のことは、pdftk 自体に脆弱性があり、それがファイルを処理する方法であるかどうかです。) このプロセスを改善するための提案はありますか? ありがとう。