2016-08-18 1 views
0

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

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

、それはセキュリティ上の問題がありますか? HTTPおよびHTTPS接続の場合

答えて

2

HTTP

あなたsupersecret値は、あなたがその逆にかかわらず、あなたがPUTを使用するかどうかの副クライアントからサーバにそれを送信したり、いつでも見られるとthirdpartiesによって傍受することができ、POSTの両方を記載してくださいこれは、クエリ文字列の代わりにこれらの値を格納するためにCookieを使用する場合にも当てはまります。

HTTPS:

データは、それがため、傍受することはできませんあなたのクライアントとサーバの間のトランジットであり、そのことは、クエリ文字列であっても、HTTPSにより保護されています。しかし、多くのシステムではクエリ文字列がログに記録されるため、ほとんどの人はクエリ文字列のデータを悪いものとして送信することを検討しています。例えば、ほとんどのサーバは、&のクエリパラメータを使ってアクセスログを出力するように設定されています。また、ブラウザの場合は、ブラウザの履歴に格納することができます。