如何保护从AJAX文件传递到jqGrid的JSON数据

时间:2012-03-29 20:49:20

标签: javascript php json ajax jqgrid

首先,非常感谢你制作jqGrid!这是一项出色的工作!

当我的index.php文件将JSON编码的搜索条件发布到我的grid.php文件时,grid.php处理条件,查询数据库,并将一个JSON编码的字符串返回给index.php,获取结果并将它们呈现在jqGrid表中。

一切都很有效。

但是,如果内部用户将其浏览器指向grid.php,它将返回一组满足默认条件的记录(每页30条记录,字段及其数据,如编程)。因为我将它设置为POST,用户可以手动将查询参数附加到grid.php,例如:

    http://foo.bar/grid.php?clientID=123&city=anytown

我在index.php和grid.php中都进行了安全检查。举个例子:

    if(userGroup='Sales'){
       $sqlstr = "SELECT * FROM table WHERE group='SALES'";
    }else{
       $sqlstr = "SELECT * FROM table";
    }

但问题是他们可以通过直接将浏览器指向grid.php来绕过这些检查。

有没有人建议如何保护grid.php返回的字符串?

更新

按照贾斯汀的建议,我认为我现在可能正走在正确的道路上。这样的事情可能有用:

    $trace = debug_backtrace();
    if ($trace[0]['file'] != 'index.php'){
       echo "There was an error. Please contact your Systems Administrator.";
       return 0;
    }

嗯,这没有按预期工作。我将此信息留给后人。

1 个答案:

答案 0 :(得分:0)

您需要添加PHP代码以保护grid.php URL。首先,如果您的应用程序可行,您可以添加身份验证系统以防止任何用户访问该URL。一旦到位,您可以通过添加基于角色或基于用户的权限来进一步保护它。

例如,如果用户提供该选项并且他们是“sales”组的成员,则仅允许附加“sales”用户组。

您将如何实际实现这取决于您使用的PHP框架(如果有)以及您的应用程序的要求。