私はプロジェクト(PHPフレームワークに基づいていない)を読んでいて、ユーザーリクエスト(またはのいずれ$_GET
か$_POST
)に応答するほぼすべてのPHPファイルで次の(手続き型)コードに出会いました。
if ($_REQUEST['a']){
$func="a_".$_REQUEST['a'];
if (function_exists($func)){
$func();
}else{
// redirect
}
}else{
// redirect
}
...
a_action_a() { ... }
a_action_b() { ... }
関数呼び出しのメカニズムとして、それが十分に安全であるかどうか (または脅威が何であるか) を知ることに興味があります。このコードは、制御フローまたは関数の列挙につながる可能性がありますか?
手続き型PHPで関数を呼び出すための適切な方法または提案されたメカニズムはありますか?