私はチャット(スラック/重要なapi)に統合するWebhookを書いています。php "exec"(webhook - > bashスクリプト)への引数の悪意のある挿入を防ぐ方法
最も簡単な方法は、それを取得し、ランニングは次のようになります迅速なPHPスクリプト、だったします
<?php
$token = $_POST["token"];
$arg = $_POST["text"];
$output = exec("./webhook_script.sh {$token} {$arg}");
現状では、スクリプトが正常に動作しますが、私は、誰かが悪意を持って行うことができます心配していますhttp POSTのクエリパラメータtext
(スクリプト:$arg
)には何らかの攻撃があります。
例:http://myserver/webhook.php?token=abc&text=123;rm -rf *
ので$arg
が123; rm -rf
なり、exec
コマンドが悪意のあるrm -rf *
を実行これは私が精通しています「SQLインジェクション」と性質が似ていますが、私は方法がわからないんだけどbashスクリプトを安全にするために...
引数を何らかの形で引用するか、おそらくregex
を使用してスクリプトパラメータをチェックするのは簡単ですか?
これは、本番マシンではひどいアプローチです。ユーザーが提供する引数でexec()を呼び出さなければならない場合は、ブラックリストではなくホワイトリストを適用することをお勧めします。あなたはどのような議論を期待していますか? – Calchas
引数は内部URLです。私はパターンに正規表現を適用することができますか? – vikingsteve
@Calchasか、Webフックに応答してbashスクリプトを起動するより良い方法を提案することができます。 PHPの解決策はすばやく簡単です。以下のマイケルの答えは、それを安全にするための手順を示しています。 – vikingsteve