web-dev-qa-db-ja.com

私のREST ember.jsアプリの実装を保護する方法

私は何日か探していましたが、私の問題の解決策について明確な答えは出ていません。

詳細を説明せずに説明すると、私はストアを構築しています。このストアにはカートシステムがないため、ユーザーは一度に1つのアイテムを購入しますが、数量システムを使用している可能性がありますが、それは重要ではありません。ユーザーのログインまたは登録システム。

支払い受付部門では、PHPとajaxを使用してStripeに依存しているため、その目的を処理します。以前のSSLを使用して大きな成功を収めており、セキュリティ機能に自信があります。

少しあいまいになったのは、製品を参照するjsonオブジェクトを提供しているバックエンドサーバーに接続したときです。ユーザーが購入すると、データベース内のそのアイテムの数量からその数が明らかに削除されます。当分の間、このビルドの概念実証部分では、誰かがEmber.js用に作成したParseと優れたParse Adapterを使用しています。それは素晴らしい仕事で、アイテムを手に入れ、数量を編集することもできます。問題は、人々がJavaScriptを検査し、それらのキーを取得し、それらを使用して他のRESTリクエストをサーバーバックエンドに送信することを可能にする可能性があるいくつかのAPIキーを配置する必要があることです。

私はParseのバックエンドがどれほど安全であるかについてひどい調査をしていませんが、上記のようにそれらのキーを取得して使用することは一見単純そうに見えます。

参考までに、私が使用しているアダプタは、それがどのように機能するかをよりよく理解させるでしょう。

https://github.com/clintjhill/ember-parse-adapter

私は誰かがこの問題についていくつかの光を当てることができることを本当に望んでいます。私は私のロープの端にいるので、ここにあるようです。私はこれに頭を包むことができないようです。

4
Jordan

最終的に、APIキーを使用してREST APIに対してクライアントが許可しないAPIに対して承認済みトランザクションを実行できる場合は、APIキーをクライアントに公開しないでください。考えてみてください。このように、REST APIにアクセスするために管理者のユーザー名とパスワードが必要な場合、クライアントに送信するJavaScriptにそのユーザー名とパスワードを入れてもよろしいですか?いいえ。 Webサイトにアクセスするすべての人を管理者にします。管理機能を実行するためのAPIキーはまったく同じです。

したがって、キーを秘密にしておく必要がある場合は、秘密にしてください。それらはサーバー上に存在する必要があり、サーバーはキーを使用してバックエンドシステムにリクエストを行う必要があります。その後、サーバーは向きを変え、API応答の結果をクライアントに返し、キーを返さないようにすることができます。

1
Xander