0

現在、ajax を介してデータベースからデータを取得する場合は、mysqli を使用してデータベースからデータを取得し、結果をエコーし​​てデータを ajax に送信する外部 php ファイルを使用します。

私は今、それをより効果的な解決策に変えたいと思っています。将来のプロジェクトとより簡単なデータ管理のためにphpファイルがjsonデータを出力するように、最初に変更すると思いました。しかし、自分の Web サイト以外からこのデータに直接アクセスできるようにしたくありません。また、Web サイトを調べることで ajax 接続を確認できるため、簡単に見つけることができます。

誰もが生の json データにアクセスして独自のアプリケーションや Web サイトを構築できる場所にはなりたくありません。

他にどのような解決策がありますか? 私の Web サーバーだけがアクセスできるはずです。

4

2 に答える 2

0

json データを要求しているドキュメントの使用を許可されているユーザーから json データを隠す方法はありません。言い換えれば、許可された方法で(サイトの通常の方法を使用して)ブラウザに到着した場合、データの検査を実際に拒否することはできません。ただし、リーチングを困難にすることはできます。自作のデータベースを構築するのに必要な時間よりもリーチングのプロセスを長くすれば、あなたの勝ちです。

  1. 1 回のリクエストで送信するデータの量を減らします。実際に表示するよりも多くのデータを送信しないでください。
  2. データをページ付きリストと詳細ビューに分割します。したがって、完全なデータにアクセスするには、リーチャーはロットごとにリクエストを行う必要があります。その後、通話/期間/ユーザーを制限できます (セッションを使用)。
  3. プロジェクトで許可されている場合は、ユーザーを識別します。不要な登録を減らす方法はたくさんあります。また、データ アクセス制限 (上記) をより効率的にすることもできます (カウンターをユーザーに接続できます)。
  4. キーベースの暗号化を使用できます。ここで可能な解決策を見つけることができます:単純なJavascript暗号化、共有秘密鍵によるPHP復号化明らかに、ブラウザはデータを復号化するため、キーを送信する必要があります。つまり、プロセスは再現可能ですが、単純な検査よりもはるかに時間がかかります。暗号化のパラメータを変更して、さらに困難にすることができます。

スクリプト化されたリーチングをもう少し難しくするために、いくつかの追加の手順を実行できます。ただし、これらによってブラウザの検査が難しくなることはありません。

  1. リクエストヘッダーから取得したリファラーを確認してください。ドキュメントの URL と一致する必要があります。
  2. X-Requested-Width ヘッダーが「XMLHttpRequest」に設定されていない場合は、何も送信しないでください ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')。これは安全で、すべてのブラウザが ajax リクエストで送信します。
  3. 一意のワンタイム パラメータを ajax URL に追加できます。単純な「スクリプト」タグ (var param='uniqparam123';) を使用して、PHP でパラメーター (または URL 全体) を渡すことができます。送信されたキーをしばらくの間一時的に保存するための高速なソリューションが必要になります。ajax リクエストが着信したら、キーを照合し、リストから削除してから、データを送信できます。

これらのいくつかを選択できることを願っています。

于 2013-05-02T16:43:10.197 に答える