2017-06-10 13 views
2

私は最近React/Angularのような最新のフロントエンド技術を使用し始めました。その結果、JSON Serverのようなツールを使用して、ダミーの安らかなdb相互作用を再現し始めました。RESTful API書き込みセキュリティ

ほとんどの残りのAPIは、URLの一部またはヘッダーとして渡される何らかの種類のトークンと秘密を介して認証されます。これはデータを取得するためには問題ないようですが、JSのようなフロントエンド言語でこれらのログイン認証情報を公開することは危険なことではありませんか?

私の考えは、誰かが自分のトークン/秘密を盗み出し、潜在的に私のdbにデータを取り込み始めるための単純なビューソースです。

+0

ログイン証明書もトークンもJS/HTMLではハードコードされていません。ユーザが認証され、ある種類のトークンを持つサーバーの特定のリソースにアクセスする権限が与えられると生成されます。 –

答えて

0

クライアント(ブラウザ)は、サーバーがそれらを提供するため、ログイン資格情報を持っていると記述しているという問題があります。資格情報がすでに公開されているため、「公開中」はありません。すべてのクライアントに資格情報を公開することは、セキュリティがないことを意味します。

私たちはセキュリティについて話すとき、ブラウザを操作する本物の人物ではなく、ブラウザと考える。あなたが言ったように、実際の人はすべてのブラウザのデータにアクセスできます。

APIを保護するには、秘密鍵を秘密にしておく必要があります。これは、各クライアントが異なるキーを持ち、それを使ってRESTfullサーバーからデータ/サービスを取得することを意味します。

単純なシナリオでは、このキーはセッションIDと同様に使用/管理できます。 クライアントは、まず認証プロセスを通過する必要があり(ログイン多分)、クライアントのセッション用に一時キーを生成することができます。

一般に、鍵は権利に変換されます。デフォルトですべてのクライアントにキーがある場合、誰もがデフォルトの権限を持っているので、キーを削除してすべての要求に対してデフォルトの権限を設定することもできます。

データベースに完全にアクセスしたくないクライアントには、データベースへのアクセスが制限されているキーが必要です。

一方、クライアントがキーを提供する場合、これは安全です。たとえば、APIにアクセスするための秘密鍵を使用するサーバー上のPHPコード。