私はSMSプロバイダとしてTwilioを使用して宛先番号にSMSを送信するSMSサービスを開発しています。 Twilioは、メッセージのステータスが更新(送信、配信など)されたときに、自分のWebサービスにPOSTリクエストを送信することを想定しています。リクエストの発信元を特定するためにリクエストの「UserAgent」を使用するのはどのように安全か危険でしょうか?
Twilio以外の人がPOST要求を送信していないことを確認するために、以下のようにリクエストのUserAgentを検証しています。
If ((HttpRequest)request.OriginalRequest).UserAgent.StartsWith("TwilioProxy/"))
{
return true;
}
現在、私は、私は、バージョン番号は、将来的に変更することができると信じてPOSTアクション、のそれぞれにおけるユーザエージェントとして「TwilioProxy/1.0」を取得していますので、私は、検証からそれをスキップしています。
Twilio以外の任意の起点から同じユーザエージェント(「TwilioProxy /」に始まるもの)を使用してリクエストを受け取ることはできますか?このタイプの検証にUserAgentを使用するのは安全ですか?
これに関する入力/提案は、私にとって大きな助けになります。
ありがとうございました
これを偽装するのは非常に簡単です。私はそれをなりすましと呼んでいません。一部のブラウザには、任意の文字列を入力できる設定があります。 –
ええ、ユーザーエージェントを偽装するのはまったく簡単です。確かに、これはあいまいさによるセキュリティですが、成功したリクエストと拒否されたリクエストの違いを見て、ユーザエージェント文字列が要因かもしれないと結論づけるのは、誰もが長くかかりません。 –
ただし、ユーザーエージェント文字列に "B1TCH3ZZZZ!1 !!"という部分文字列が含まれている場合、クライアントは実際にNapoleon Bonaparteではありません。 –