首先,非常感谢你制作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;
}
嗯,这没有按预期工作。我将此信息留给后人。
答案 0 :(得分:0)
您需要添加PHP代码以保护grid.php URL。首先,如果您的应用程序可行,您可以添加身份验证系统以防止任何用户访问该URL。一旦到位,您可以通过添加基于角色或基于用户的权限来进一步保护它。
例如,如果用户提供该选项并且他们是“sales”组的成员,则仅允许附加“sales”用户组。
您将如何实际实现这取决于您使用的PHP框架(如果有)以及您的应用程序的要求。