ユーザーから提供されたAPIキーにアクセスできるアプリケーションに取り組んでいます。アプリケーションは、ユーザーに代わってAPI呼び出しを行います。
使用しているAPIにより、ユーザーはAPIキーを使用できるIPアドレスをホワイトリストに登録できます。セキュリティをさらに強化して、IPアドレスからのリクエストのみが許可されるように、アプリのIPアドレスをホワイトリストに登録するようユーザーに指示することを考えていました。
しかし、IPアドレスを偽装するのはかなり簡単であり、ホワイトリストに追加するIPアドレスをユーザーに通知することを検討しました(つまり、悪意のある人物がどのIPアドレスが有効であるかを確認するために一生懸命働く必要はありません)。 、これは努力の価値さえあるのだろうか?
悪意のある俳優が何らかの形でユーザーのAPIキーを入手した場合、IPアドレスのホワイトリストは本当に意味のあるセキュリティ層を追加するのでしょうか?それとも、悪い俳優にとっては、せいぜいマイナーな不便なだけでしょうか?
ありがとう!
しかし、IPアドレスを偽装するのはかなり簡単です。
これはあなたが間違っているところです。ウェブサイトに接続するのは簡単なので、プロキシサーバー経由でルーティングすることで、自分のものではないIPアドレスを確認できますが、任意のIPアドレスを偽装することはできませんできません。 TCPプロトコルの場合、これはおそらく使用しているプロトコルですが、インターネット自体のバックボーンの大部分を危険にさらすことなくIPアドレスを偽装することは不可能です。
これは、TCPが handshake を使用して接続を確立するためです。最初に、クライアントはSYNパケットを送信します。パケットにはソースIPが含まれています次に、サーバーは指定されたIPにSYN + ACKパケットで応答し、その後クライアントは最終的にACKを送信します。技術的にはソースIPを偽装することは可能ですが、サーバーはSYN + ACKを当然のことながら予期しない接続を拒否する偽の送信元アドレストラフィックはハンドシェイクの完了後にのみ送信できるため、本物の送信元IPアドレスのみが機能します。
iPアドレスのホワイトリストを作成すると、意味のあるセキュリティ層が本当に追加されますか?
APIキーを盗んだ攻撃者がそれらを使用してサービスにログインすることしかできない場合、 your IPをホワイトリストに登録してもセキュリティは向上しません。結局のところ、攻撃者は盗んだAPIキーをとにかく(ab)使用するためにホワイトリストに登録されたアドレスに接続します。代わりに、攻撃者がサイトの偽のコピーを作成し(例:MITM攻撃)、アプリケーションにAPIキーを送信させようとするのではないかという懸念がある場合でも、アドレスをホワイトリストに登録しても効果はありません。代わりに、すべての通信にTLSを使用し、アプリケーションでTLSフィンガープリントをハードコーディングする必要があります。そうすることで、クライアントは、アプリケーションが非正規サーバーへの接続を拒否することを保証できます。