PHP:来自$ _REQUEST的正确函数调用

时间:2013-04-11 09:22:09

标签: php function security procedural-programming

我一直在阅读一个项目(不是基于任何PHP框架),我在几乎每个响应用户请求的PHP文件上都遇到了以下(程序)代码($_GET$_POST )。

if ($_REQUEST['a']){
    $func="a_".$_REQUEST['a'];
    if (function_exists($func)){
        $func();
    }else{
        // redirect
    }
}else{
    // redirect
}
...
a_action_a() { ... }
a_action_b() { ... }

我很想知道它是否足够安全(甚至更好的威胁)作为函数调用的机制。这段代码可以导致控制流或函数枚举吗?

在程序PHP中是否有正确的方法或建议的函数调用机制?

1 个答案:

答案 0 :(得分:-1)

  

是否有正确的方法或建议的函数调用机制   程序化PHP?

正确的方法是使用路由器脚本,根据路由决定要执行的代码,例如在Silex中。

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

并在webroot上有正确的.htaccess文件

FallbackResource /index.php

这可能是一个意见问题,但有0个真实用例,你需要直接将你的应用程序的内部工作暴露给客户端,即使你的所有功能都加上前缀。