まず、jqGridを作成していただきありがとうございます。これは素晴らしい作品です!AJAXファイルからjqGridに渡されるJSONデータを保護する方法
私のindex.phpファイルがJSONでエンコードされた検索条件をgrid.phpファイルにPOSTすると、grid.phpは条件を処理し、データベースを照会し、JSONでエンコードされた文字列をindex.phpに返します。 turnは結果をjqGridテーブルにレンダリングします。
すべてがうまく機能します。
ただし、社内ユーザーがブラウザをgrid.phpに設定すると、デフォルト基準(1ページに30レコード、フィールドとそのデータがプログラムされている)を満たすレコードセットが返されます。私はPOSTに設定しているためと、ユーザーは、例えば:私は私のindex.phpとgrid.phpの両方でセキュリティチェックを配置した
http://foo.bar/grid.php?clientID=123&city=anytown
を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;
}
まあ、期待通りに動作しませんでした。私は後世のためにここにこの情報を残しています。
どのように$ userGroupを取得していますか?私はあなたがセッションを探しているかもしれないと思う。あなたは&usergroup = Salesのようなことはしていませんか? – Corbin
決して決してクライアントにSQLステートメントを作成することは決して決してありません。常に検証されたパラメータを使用し、サーバー上で実行します。 –
私はセッションを使用しており、userGroupはpostData経由でindex.phpから送信されています。しかし、grid.phpがindex.phpに返すものをどのように緩和するかは分かりません。 – Sanuglia