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

这可能是一个见仁见智的问题,但是有 0 个实际用例,您需要将应用程序的内部工作直接暴露给客户端,即使为所有功能添加前缀也是如此。

于 2013-04-11T09:33:12.630 回答