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

标签 javascript php json ajax jqgrid

首先,非常感谢您制作jqGrid!这是一个非常好的作品!

当我的index.php文件将JSON编码的搜索条件发布到我的grid.php文件时,grid.php处理该条件,查询数据库,并将JSON编码的字符串返回给index.php,而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;
    }

嗯,这没有按预期工作。我将这些信息留在这里供后代使用。

最佳答案

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

例如,仅当用户提供该选项并且他们是“销售”组的成员时才允许附加“销售”用户组。

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

关于javascript - 如何保护从 AJAX 文件传递​​到 jqGrid 的 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9933312/

相关文章:

python - 从 api 响应解析嵌套 json 的最佳方法

Javascript可以在FF中运行,但不能在IE或Chrome中运行(简单功能)

javascript - 无法将没有 YogaNode 的 child 添加到没有测量功能的 parent ! (试图将 'ReactRawTextShadowNode' 添加到 'LayoutShadow

javascript - Phonegap Build 应用程序找不到 Javascript 文件

javascript - jsFiddle 逻辑运算符中的圆括号

php - 从经纬度获取国家名称

Javascript - 自动从数据库加载 php 数据

Php根据指定时间更改日期

ios - Firebase queryOrderedByChild 不在 Swift 中按名称排序

android - 如何制作Retrofit类