我一直在阅读一个项目(不是基于任何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中是否有正确的方法或建议的函数调用机制?
答案 0 :(得分:-1)
是否有正确的方法或建议的函数调用机制 程序化PHP?
正确的方法是使用路由器脚本,根据路由决定要执行的代码,例如在Silex中。
$app->get("/index",function(){
return "this is the index";
});
并在webroot上有正确的.htaccess文件
FallbackResource /index.php
这可能是一个意见问题,但有0个真实用例,你需要直接将你的应用程序的内部工作暴露给客户端,即使你的所有功能都加上前缀。