2012-03-29 12 views
1

まず、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; 
    } 

まあ、期待通りに動作しませんでした。私は後世のためにここにこの情報を残しています。

+0

どのように$ userGroupを取得していますか?私はあなたがセッションを探しているかもしれないと思う。あなたは&usergroup = Salesのようなことはしていませんか? – Corbin

+1

決して決してクライアントにSQLステートメントを作成することは決して決してありません。常に検証されたパラメータを使用し、サーバー上で実行します。 –

+0

私はセッションを使用しており、userGroupはpostData経由でindex.phpから送信されています。しかし、grid.phpがindex.phpに返すものをどのように緩和するかは分かりません。 – Sanuglia

答えて

0

grid.phpのURLを保護するためにPHPコードを追加する必要があります。まず、アプリケーションで実現可能な場合は、認証システムを追加して、すべてのユーザーだけがURLにアクセスできないようにすることができます。それがいったん成立すれば、ロールベースのアクセス許可やユーザーベースのアクセス許可を追加することで、さらに保護することができます。

たとえば、ユーザーがそのオプションを提供し、それらが「販売」グループのメンバーである場合にのみ、「販売」のユーザーグループを追加できるようにします。

これを実際にどのように実装するかは、使用しているPHPフレームワーク(存在する場合)とアプリケーションの要件によって異なります。

+0

こんにちはジャスティン、アドバイスをいただきありがとうございます!したがって、.htaccess経由でそのファイルを保護するパスワードは機能しませんが、あなたの提案は私にこの方向性を与えました。私はこのCRMを継承し、どのような種類のフレームワークでも構築されていませんが、確かに "./index.phpが私に電話している場合は応答し、それ以外の場合はエラーを出力します。今、どのように*それを行うかを理解する。私は提案にオープンしています:) – Sanuglia

+0

ええと...正しいデータがある場合(または利用可能にできる場合)、セッションのデータを使用してこのチェックを行う方が良いでしょう。たとえば、 'if($ _SESSION ['role_permissions] [' sales ']){...}'と言うことができる場合。しかし明らかに、それはアプリケーションのより大きな変更を伴います。 –

+0

よろしくお願いします。変更がより関与するかもしれないが、私はそれが実行可能な解決策だと思う。私はそのショットを与えるでしょう。 brazillionありがとう! – Sanuglia

関連する問題