HTTPSを使用している間、中央の攻撃で男性を防ぐ
-
28-09-2019 - |
質問
Omegleに似た小さなアプリを書いています。 JavaにHTTPサーバーと、HTMLドキュメントであるクライアントが書かれています。コミュニケーションの主な方法は、HTTPリクエスト(長い投票)です。
HTTPSプロトコルを使用して何らかのセキュリティを実装しました。サーバーに接続するすべてのクライアントにセキュリティIDがあります。クライアントが接続すると、サーバーは、クライアントがリクエストを必要とするときに常に送信する必要があるセキュリティIDを提供します。
私はここの中間攻撃の男を恐れています、あなたは私がそのような攻撃からアプリを保護する方法を示唆していますか?
このアプリは理論的な目的で構築されていることに注意してください。実際の理由で使用されることはないため、ソリューションは必ずしも実用的である必要はありません。
解決
HTTPSは、暗号化だけでなく、サーバーの認証も行います。クライアントが接続すると、サーバーには、ドメインに対して有効で信頼できる証明書があることが表示されます。この証明書は、単に中間の男によってスプーフィングまたは再生されるわけではありません。
他のヒント
Webには複雑な合併症が多すぎるため、HTTPSを有効にするだけでは十分ではありません。
一つには、Cookieに安全なフラグを設定してください。そうしないと、盗まれる可能性があります。
また、ユーザーがタイピングを介してサイトにのみアクセスできるようにすることもお勧めします https://<yourdomain>
アドレスバーでは、これが有効な証明書でHTTPSセッションが作成されることを確認する唯一の方法です。入力するとき https://<yourdomain>
, 、ブラウザは、サーバーが有効な証明書を提供しない限り、サイトであなたを許可することを拒否します <yourdomain>
.
入力するだけの場合 <yourdomain>
https://がないと、ブラウザは何が起こるかを気にしません。これには、頭の上部から考えることができる2つの意味があります。
攻撃者は、同様の名前を持ついくつかのUnicodeドメインにリダイレクトします(つまり:同じように見えますが、異なるバイナリ文字列があるため、異なるドメインです)。おそらくこれに気付かないでしょう...
攻撃者はサーバーをエミュレートすることができますが、HTTPSがなければ、彼は実際のサーバーへの彼自身の保護された接続を行い、あなたとサーバーの間のクリアテキストプロキシになり、彼はあなたのセッションを所有しているので、彼があなたのすべてのトラフィックをキャプチャし、彼が望むすべてのことをすることができます。