4

特定のサイトにのみ提供したい JSON Web サービスがあります。これは、JSONP を使用して JavaScript を介して呼び出されるサービスです。許可されていないサイトがアクセスするのを防ぐ (またはせいぜいアクセスをより困難にする) にはどうすればよいでしょうか? ユーザー/パスワードの要求は機能しません。これは、JavaScript で明白に表示されるためです。

例: domain.com の Web サービスで天気情報を提供していますが、website.com と webpage.com のみがアクセスできるようにしたいと考えています。しかし、Web サービスは JavaScript を介してアクセスされるため、lazywebsite.com は Web サイト/Web ページのソースを表示し、JavaScript コードをコピー/貼り付けすることができます。

これまでの私の考え:

  • API キーを使用してHTTP_REFERER、サービスへのアクセス元をログに記録します。HTTP_REFERERは信頼できないため、これは理想的ではありません。
  • 私が提供するアルゴリズムを使用して website.com/webpage.com にサーバー側で一意のキーを生成させ、それをセッションに保存し、それをキーとして使用して Web サービスにアクセスします。このように、トークンはその特定の訪問者に対してのみ登録され、JS はコピー/貼り付けできません。問題は、一意のキーを生成するページを保護する website.com/webpage.com に移ります。

より良い解決策はありますか?

4

2 に答える 2

4

完璧な方法はありません。

セキュリティを真剣に考えている場合、解決策は、JSON サービスを世界に公開しないことです。プライベートにして、website.com と webpage.com がサーバーからデータを取得するためのプライベートなバックエンド リクエストを作成するように要求します。その後、必要なすべてを認証することができ、シークレットはサーバー コードで安全に保たれます。基本的にはプロキシ ソリューションです。(良い利点の 1 つは、JSON データのオリジンが Web サイトと同じになるため、JSONP ハッキングを行う必要がないことです)。

セキュリティについてそれほど真剣ではなく、単にセキュリティを難しくしたい場合は、既にレイアウトした最も単純なものを使用してください。リファラーを確認します。そのヘッダーはスプーフィングされる可能性がありますが、それは苦痛であり、ほとんどの攻撃者がそれを試みようとは思わないことを願っています. また、パスワードや API キー (同等のもの) を要求し、Javascript 内で難読化して、アクセスを困難にします。

于 2009-08-20T02:30:42.930 に答える
-3

この古い質問の更新として、facebook と twitter の JavaScript API がセキュリティのために何をしているのかを確認することをお勧めします。

于 2011-12-13T18:14:02.547 に答える