質問

私は埋め込みクライアントのリクエストに対応するサーバー コンポーネントを開発していますが、これも私の制御下にあります。

現時点ではすべてがベータ版であり、セキュリティは次のように機能します。

  1. クライアントは https 経由でユーザー名とパスワードを送信します。

  2. サーバーはアクセストークンを返します。

  3. クライアントは、カスタム ヘッダー内のアクセス トークンを使用して http 経由でさらにリクエストを送信します。

これはデモとしては問題ありませんが、リリースする前に修正する必要がある問題がいくつかあります。

  • 誰でもコピーできます login リクエストして再送信し、アクセス トークンを返します。 一部のユーザーが回答したように、https を経由するのでこれは問題ではありません。私の間違いです。

  • リクエスト ヘッダーを検査するだけで、誰でもリッスンしてアクセス キーを取得できます。

重複したリクエストを拒否できるようにタイムスタンプを使用した対称キー暗号化を考えることはできますが、このシナリオ用のよく知られたグッド プラクティス (これは非常に一般的なようです) があるかどうか疑問に思っていました。

洞察力をありがとう。

追伸:念のため、サーバーには Java を使用し、クライアントは C++ でコーディングしています。

役に立ちましたか?

解決

ログイン要求がある場合は、

<ストライキ>私は最初の部分を得ることはありません、HTTPS、誰もがそれをどのようにコピーすることができますか?

<ストライキ> 第二部について

<ストライキ>、T これはかなり標準のセッションハイジャックのシナリオです。 をhref="https://stackoverflow.com/questions/22880/what-is-the-best-way-to-prevent-session-hijacking">参照してください。もちろん、内蔵のブラウザのオプションここではありませんが、基本的な考え方は同じである - それは重要ときのみ、安全な接続を介してトークンを送ったり、何らかの方法で送信デバイスとトークンを関連付けるのいずれか

ブラウザでは、基本的にあなたが持っているすべては、(非常に良いではありません)IPアドレスですが、あなたの場合には、あなたが同じトークンISNを確保するために、要求に対して検証お使いのデバイスに関する特定の何かを表現することができるかもしれ「トンはどこか別の場所から使用されます。

編集:あなたはちょうどここに幸運であるとプロキシの後ろに変更IPアドレスを除外することができ、そして実際にこの目的のためにそれを使用することができます。

しかし、一日の終わりに、それはのむしろここに独自のロールしようとするよりも、よく知られた、レビューライブラリからHTTPSを使用するのより安全です。私は、httpsのオーバーヘッドですが、あなた自身をロールすることは、攻撃者が活用できることは明らかなものが欠けて周りに大きなリスクを持っていることを実現します。

他のヒント

最初の質問は、それを明らかにするためです。悪意のあるクライアントなりすましアクセスを十分に懸念しているのであれば、会話全体を HTTPS 経由で実行してみてはいかがでしょうか。このアプリケーションにとって、最小限のパフォーマンスへの影響は、セキュリティ層を追加する価値がないほど重大なものですか?

次に、ログイン要求をどのようにして再実行できるでしょうか?私の記憶が間違っていなければ、それは HTTPS 経由で行われています。接続が正しく設定されている場合、HTTPS はワンタイム nonce を使用したリプレイ攻撃を防ぎます (「 ここ).

一般的な提言の一つです - httpsを使用

httpsの脇に中間者攻撃は、セッション全体にHTTPSを使用することは十分に信頼できるものでなければなりません。あなたも、アクセストークンを心配する必要はありません - 。httpsのはあなたのためにこれの世話をする。

さらに要求に対してHTTPを使用して、いくつかの脆弱性を紹介しているようです。今、ネットワークスニファを持つ誰もがあなたのトラフィックがトークンを盗み、あなたのリクエストを偽造傍受することができます。 、トークンの暗号化をトークンなど一度使用しますが、そうすることであなたは、HTTPSを再作成されます - あなたはそれを防ぐための保護を構築することができます。

それはあなたのサーバーとクライアントの間で自分自身を挿入し、そのコードをあなたの要求を集中させる誰かの能力に基づいている -

バック中間者攻撃でHTTPS男に行きます。攻撃者が物理的なネットワークへのアクセスを持っている場合、すなわち、すべてのなんとかです。こうした攻撃者が直面する問題は、彼があなたに適切なデジタルcertificatを与えることができないということである - 彼はあなたがそれに署名するために使用する秘密鍵を持っていません。 HTTPSがブラウザを介してアクセスすると、ブラウザはあなたに警告を与えるが、まだあなたは、ページに通過させることができます。

あなたのケースでは、サーバーと通信するクライアントです。そして、あなたは証明書のすべての適切な検証が整っていることを確認することができます。そうした場合、あなたは大丈夫でなければならないこと

編集

Seconding Yishai - はい、いくつかのオーバーヘッドは、主にCPU、関与しないが、この追加のオーバーヘッドは、ボード上のサーバーを押すと、アプリで大きな問題を抱えているさ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top