0

REST API の現在の実装では、すべてのタイプのリクエスト (PUT、POST、GET) に対して queryString 内で apiKey を使用します。私はそれが間違っていると感じていますが、その理由を説明することはできません (おそらく apiKey はサーバーとクライアントの間のどこかにキャッシュされる可能性があります)。何かのようなもの:

POST /objects?apiKey=supersecret {name: 'some'}

それで、それはセキュリティ上の問題ですか?HTTP 接続と HTTPS 接続の両方のケースについて説明してください

4

1 に答える 1

3

HTTP

スーパーシークレットの値は、PUT、POST などを使用するかどうかに関係なく、クライアントからサーバーに、またはその逆に送信するたびに、サードパーティによって表示および傍受される可能性があります。これは、クエリ文字列の代わりにこれらの値を保存するために Cookie を使用する場合にも当てはまります。 .

HTTPS:

データがクライアントとサーバーの間で転送中の場合、クエリ文字列であっても https で保護されているため傍受できません。しかし、多くのシステムがクエリ文字列をログに記録するため、ほとんどの人はクエリ文字列でデータを送信するのは悪いことだと考えています。たとえば、ほとんどのサーバーは、パスとクエリパラメーターを使用してアクセスログを出力するように構成されています。また、ブラウザからの場合は、ブラウザの履歴に保存できます。

于 2016-08-18T11:32:58.677 に答える