我一直在阅读一个项目(不基于任何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中是否有合适的方法或建议的机制来调用函数?是否有适当的方法或建议的机制来调用函数PHP程序?
正确的方法是使用一个路由脚本,它将根据路由决定执行什么代码,就像在Silex中一样。
$app->get("/index",function(){
return "this is the index";
});
,并在web浏览器
中有适当的。htaccess文件FallbackResource /index.php
这可能是一个意见问题,但没有真正的用例,你需要暴露你的应用程序的内部工作直接给客户端,即使前缀你所有的函数。