Как защитить данные JSON, которые передаются из файла AJAX в jqGrid - PullRequest
1 голос
/ 30 марта 2012

Прежде всего, большое спасибо за создание 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?

UPDATE

Согласно предложению Джастина, я думаю, что сейчас я на правильном пути. Примерно так может работать:

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

Ну, это не сработало, как ожидалось. Я оставляю эту информацию здесь для потомков.

1 Ответ

0 голосов
/ 30 марта 2012

Вам необходимо добавить код PHP для защиты URL-адреса grid.php. Во-первых, если это возможно для вашего приложения, вы можете добавить систему аутентификации, чтобы запретить доступ к URL-адресу любому пользователю. Как только это произойдет, вы сможете защитить его еще больше, добавив разрешения на основе ролей или пользователей.

Например, разрешить добавление группы пользователей «sales» только в том случае, если пользователь предоставляет эту опцию и является членом группы «sales».

То, как вы на самом деле будете это реализовывать, зависит от того, какую среду PHP вы используете (если есть) и от требований вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...