パスワードを忘れた? アカウント作成
15486324 story
インターネット

Qiitaで3桁数字のユーザー名を登録するとバグが起きるかもしれない 50

ストーリー by nagazou
URL+名前だとこうなるのか 部門より
エンジニアコミュニティ「Qiita」では、一部のHTTPステータスコードと重複する数字などの名前を使用して登録するとエラーが発生する可能性があるらしい。@500さんの記事によれば、Qiitaに記事を書こうとアカウントを作成、適当にユーザー名を「500」に設定したところ意外にも通ってしまったそうだ。しかし、URL+名前で構成されたマイページにアクセスすると、障害が発生していると表示されるようになってしまった(@500さんの記事)。

同氏はこのトラブルはHTTPステータスコードと重複しているため発生したのではないかと推測している。同氏も「500」以外の名前では試してないので確実に再現されるかは不明だが、このようなHTTPステータスコードと重複する数字3桁のような名前を使うのは避けたほうがいいだろうと警告している。
  • テストの段階でこういうの普通に踏むと思うんだけどこれくらいのテストしておかなかったのかなあ(実際当方は踏んで、ダメなユーザ名の一覧を作ってバリデーション条件とした)、とか、抑も数字だけのユーザ名は何となく避ける感覚なかったのかなあ、とか思うところはいくらかある

    ここに返信
    • by Anonymous Coward

      ダメな名前一覧っていうか、普通は空間を分けると思う

    • by Anonymous Coward

      urlの構造の問題と同時に200以外で異常を表す正常なページを返す悪しき習慣の弊害もある。

      # httpの仕様外の挙動してるんだからそれを考慮しなかったただの漏れとは言え

      • by Anonymous Coward

        それについてはQiitaがNginxをちゃんと使えていない可能性もある。

        named location(location @hogeみたいなやつ)や、内部にinternal; [nginx.org]を置いたlocationブロックは、外部からのアクセスでは使用されなくなり、error_pageやその他Nginx内部リダイレクトでのみ到達できるlocationになる。こうするとhttps://example.com/500 で500用ページが丸見えというのは回避できる。

        Qiita運営がそれを知らないのか、より下流のリバースプロキシ・CDN等で利用するため意図して/500などを公開しているのかは、外部の人間には分からない。

        なお、QiitaがNginx使っているのは、HTTPレスポンスヘッダーフィールドのServerを見てそう判断した。

    • by Anonymous Coward

      E-mailアドレスを他のIDに流用した結果、使えない文字がゴロゴロと。
      #お、オレが作ったんじゃないぞ。名前もしらない既に退社ずみの誰かだ。

      たしかにそんな文字は滅多に使わないけどね。。。
      メールアドレス仕様の深淵を覗き込むのはいくない。

    • by Anonymous Coward

      バズって儲かるから放置みたいな

  • by Anonymous Coward on 2021年11月17日 15時29分 (#4153906)

    (Qiitaではユーザー名の縛りで不可能だけど)「.well-known」というユーザー名を取得されてしまうとセキュリティ的にマズいことになるので、そもそものURL設計が危なっかしい。
    /.well-known/RFC 8615 [ietf.org]で定められたWell-known URI [wikipedia.org]なので、この階層にユーザーが任意のファイルをアップロードできるとサーバ証明書を不正に発行できてしまう。
    チルダでもアットマークでも別な階層を挟むでもいいから、ユーザー名をそのままドメイン直下にマッピングするのはやめた方がいい。

    ここに返信
    • by Anonymous Coward

      最近「~」があまり使われないのはなんでなんだろう

      • by Anonymous Coward

        チルダは、昔風のUNIXサーバの共用レンタルサーバ時代の名残でしょう
        UNIXのアクセス管理・ディレクトリ構造をそのまま流用した感じの

        いまは、独自システムでそういったのを利用しないサービスだったり、
        そもそも仮想PCベースのレンタルサーバが当たり前になったし

        • by Anonymous Coward

          共有サーバー時代でも、~は%7EにURLエンコードされちゃう(当時のRFC的は~は直NGだったので正しい)のでユーザーに優しくないとか、
          HTTP1.1クライアント未満が滅んで、名前ベースのバーチャルホストが当たり前に使えるようになり、
          共有レンタルサーバーでもサブドメインで分けるようになったとかも廃れた理由に有りそう。

      • by Anonymous Coward

        見た目も名前もチン毛みたいだからじゃね?

  • 3年ぐらい前だと非公開記事(URL共有による閲覧のみ)がある場合にユーザ認証による制限が行われていません

    なので、シジルとして@が使われる言語RubyやPerl等がある場合に
    Qiita上のメンションと区別がされていなませんでした
    例えばですが書かれた非公開記事の中に「@test」って文字列があると
    Qiita上の@testさんに通知メールが送られてきてURLが入っているので非公開記事が見ることが出来るという素敵な仕様でした

    今はなおったのかなぁ?

    ここに返信
    • by Anonymous Coward

      Qiitaって深く考えずちゃちゃちゃっと記事を書いて公開するサイト。
      運営もちゃちゃちゃっと書きあげて作ったんだろうね。

    • by Anonymous Coward

      Qiitaの非公開って、一覧に出ないってだけの意味だぞ

  • by Anonymous Coward on 2021年11月17日 20時15分 (#4154130)

    GitHubもユーザー名はドメイン直下。
    でもsponsorsとかactionsとかサービス開始当初に想定できなさそうな名前がきちんと空いていて偉いと思った。
    交渉したか無理やりで取り上げたのかもしれないけど、wayback machineでは確認できず。
    適当な名前で試して今後予定しているサービスを検討するのも良いかも。基礎的な単語網羅してそうだが。

    ここに返信
    • by Anonymous Coward

      偉いのか、それ。
      ユーザーが入力した文字列をそのままURLのパスに使うのが本当に偉いのか。
      昔はパスでなくクエリ文字列で扱ったから平気だったんだろうけどねぇ。

      • by Anonymous Coward

        ユーザーが入力した文字列をそのままURLのパスに使うのが本当に偉いのか。

        スラドの悪口はやめてさしあげろ。https://srad.jp/~ユーザー名 がそのまま使われてるよ。

        (例)https://srad.jp/~Oliver

        • by Anonymous Coward

          その ~ が大事だって話でしょ

      • by Anonymous Coward

        自分ならそんな設計はしないけど、それを完全に管理できるなら流石とは思う。

  • by Anonymous Coward on 2021年11月17日 15時21分 (#4153894)

    > ユーザ名 404 はすでに存在します。

    一方 https://qiita.com/404 [qiita.com] にアクセスすると
    > お探しのページは見つかりません。
    > 404: Not Found

    ここに返信
    • by Anonymous Coward

      418はteapotさんがおられました

    • by Anonymous Coward

      Unavailable For Legal Reasons

      # https://qiita.com/Ghosn [qiita.com]にアクセスするとhttps://qiita.com/410にリダイレクトされることはなかった

  • by Anonymous Coward on 2021年11月17日 15時23分 (#4153898)

    ユーザー名:wp-config.php
    とかしたらサイトの管理画面通ちゃったりするのだろうか
    まさかなぁ

    ここに返信
    • by Anonymous Coward on 2021年11月17日 16時41分 (#4153970)

      単純にエラー用のhtmlとマイページのurlが重複しちゃってるだけ。
      https://qiita.com/xxx [qiita.com]
      という形をマイページurlにしたらそういう重複はすぐに起きる。
      マイページとエラーページのどちらの表示優先順位が上かwebサーバーの表示設定によりけり。

      wp-config.phpの場合は、最初から(ユーザー名を誰も取ってないときから)誰でも管理画面にアクセスできるのが一般的(管理画面で管理者のパスワードを要求されるのが一般的だから設定を誰でもいじれるわけではない)。

      誰かがユーザー名を取った場合は、
      設定画面の表示優先順位が上ならマイページを開けないし(誰でも管理画面にアクセスできる)
      マイページの優先順位が上なら管理画面が開かなくなる(管理者すら管理画面にアクセスできない)。

      #今回のトラブルだとユーザー名index.htmlみたいなのも問題起きる可能性あるね

  • by Anonymous Coward on 2021年11月17日 15時31分 (#4153909)

    予約語と重なるような名前は避けたほうがいいのかなあ。
    日本にも「匿名」さんとか「某」さんとかが絶対いないとは言い切れないけど・・・こっちはエラーは起きなさそう(テストデータと間違えられる可能性はあるが)

    ここに返信
  • by Anonymous Coward on 2021年11月17日 17時10分 (#4153988)

    なんというか残念。

    ここに返信
    • by Anonymous Coward

      Wake Up, The プロジェクト 燃えあがれ
      光と闇の果てしないバトル

      Wake Up, The プロジェクト 退行よ
      人に時間を与えてくれ

  • by Anonymous Coward on 2021年11月17日 17時28分 (#4154002)

    はやめておこう

    #801とかも

    ここに返信
    • by wolf03 (39616) on 2021年11月17日 19時24分 (#4154085) 日記
      573とか417とかなら?
      • by Anonymous Coward

        573とか417とかなら?

        今時分は567ですかね

    • by Anonymous Coward

      ほい
      https://qiita.com/893 [qiita.com]

      801はまだない

    • by Anonymous Coward

      鉄ヲタ的には3桁の数字は色々とネタになる

      ……が、あまり引っかかるのはないか。101・103、201・203・205・207……あとは415あたりか、ステータスコードとの重複は。

      # 475とか381が好き
      # 新しいのだと221とか811とか

      • by Anonymous Coward

        私、プライベートIPアドレスの最後のオクテットには192.168.0.101, 192.168.0.103など使っています。0~99はDHCP用という棲み分けができてちょうどいい。短所は交流・交直流形をまったく採用できないところ。

    • by Anonymous Coward

      0721

typodupeerror

ソースを見ろ -- ある4桁UID

読み込み中...