2

私はプロジェクト(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で関数を呼び出すための適切な方法または提案されたメカニズムはありますか?

4

1 に答える 1

-1

手続き型PHPで関数を呼び出すための適切な方法または提案されたメカニズムはありますか?

適切な方法は、Silex のように、ルートに応じて実行するコードを決定するルーター スクリプトを使用することです。

$app->get("/index",function(){
  return "this is the index";
});

webroot に適切な .htaccess ファイルがあること

FallbackResource /index.php

それは意見の問題かもしれませんが、アプリの内部構造をクライアントに直接公開する必要がある実際のユースケースはありません。すべての関数にプレフィックスを付けてもです。

于 2013-04-11T09:33:12.630 に答える