【发布时间】:2014-07-08 20:24:06
【问题描述】:
这是一个好方法,通过javascript调用php函数?
我的 POST 数据如下所示:
{
0: [
{
"name": "function",
"value": "toggle_user_status"
}
],
1: [
{
"name": "user_id",
"value": "1"
}
],
...
...
}
我的 Ajax 类看起来像这样:
<?php
class Ajax
{
public function handleAjax() {
$load_function = $_POST['function'];
return call_user_func(array($this,$load_function));
}
private function toggle_user_status() {
return '555nase';
}
}
我知道 $_POST 变量不安全,但这不是重点。我想知道这是否是调用函数的好方法...?
PS: url http://local.yolo/admin/ajax 只接受来自已登录管理员的请求
【问题讨论】:
-
不理想,是什么阻止我编辑您的 JS(使用 Firebug 之类的东西)并将其更改为运行
delete_all_users()?我知道猜测函数名称并不容易(你可能永远不会拥有该函数)但是如果你这样做了呢? -
非常不安全。严重地。假设有人编辑帖子数据以调用
delete函数。你要吗?没有。 -
您需要验证您的输入。调用本身对我来说很好(虽然不理想) - 如果您检查参数(允许的函数,允许的参数)......
-
@ex3v :我忘了说:url local.yolo/admin/ajax 只接受来自已登录管理员的请求
-
IMO 没关系。您不知道是否有任何漏洞/后门可能最终导致未经授权的访问。还有错误地做错事(例如调用另一个方法)的因素吗?还有一件事情。从我个人的经验来看,这些事情一开始似乎很简单,但它们几乎总是会变成一大碗你无法维护的蹩脚代码。我的意思是——当然,现在只有几行代码,但是函数 a 需要一些额外的参数——你必须处理这个,函数 b——另外两个参数等等。
标签: javascript php ajax