@を使ったURL偽装

セキュリティ

@を使ったURL偽装について記載します。
詐欺サイトでは、まぎらわしい表現を使って、偽のページに誘因するようですので注意しましょう。

@を使ったURL偽装

 次のURLにアクセスすると、
  https://www.yahoo.c0.jp@tansunohazama.sakura.ne.jp
    ※co.jp ではなく c0.jp となっている
当HPへのアクセスになります。


 当HPはURLが長いので、違和感を感じると思うのですが、次のようなURLだと違和感を感じにくくなりませんか。
   https://wvw.amazon.co.jp@8.8.8.8
    ※ www ではなく wvw となっている
このURLへジャンプすると、amazonではなく、google(アメリカ)のページが開かれます。
 

どうしてこうなるのか

 これは、@以降をURLとみなす仕組みを使っています。
 URLの仕様はRFC 3986: Uniform Resource Identifier (URI): Generic Syntaxで細かく定められており、URLの構文は次のように定められています、

   scheme://user:password@host:port/path?query#fragment

    ※schemeは一般的に https あるいは http が使われる
     portは省略されており、 443 あるいは 80 番ポートに繋がる
   (例)https://login_user:123456abc@tansunohazama.sakura.ne.jp:443/wordpress?query#fragment

という形式で定められています。
 この、user:password の部分は、もともとbasic認証というレガシーな技術に使われていましたが、現在はbasic認証自宅が非推奨となり、誰も使っていない技術となってます。(使っている方ごめんなさい)

 ですから、@より前に記載されている文字列については、basic認証のユーザIDとみなされるので、@以降の部分がURLとして認識される仕組みとなっているのです。

思ったこと

 昔から「basic認証はもうやめましょう」と言われ続けていますが、設定の簡単さから未だに使う人がいるのが現状です。
 仕様を変えれば誰も使わなくなりますので、Basic認証を廃止し、早いうちにURLの構文から user:password を外した方がいいと思います。