Прежде всего, большое спасибо за создание 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;
}
Ну, это не сработало, как ожидалось. Я оставляю эту информацию здесь для потомков.