Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

iOS9.0.2のSafariで意図しないフォームにユーザー名が自動入力される現象を調べた時のメモ

More than 5 years have passed since last update.

発生した現象

ログインIDとパスワードを保存しているサイトで、ユーザー情報を編集する画面を開いた際に本来メールアドレスを入力する欄にログインIDが補完された。
iOS9.0.2でのみ発生。

再現してみる

とりあえず下記のような最小限のログインフォームのようなものを作ってlogin_idとpasswordの値を保存した。

<form method="POST">
  <div>
    login_id<input type="text" name="login_id">
  </div>
  <div>
    password<input type="password" name="password">
  </div>
  <div>
    <input type="submit">
  </div>
</form>

IMG_4912.PNG


自動入力が働いた時と同じ名前の入力欄があるページを作って開いてみる。

<form method="POST">
  <div>
    email<input type="text" name="email">
  </div>
  <div>
    <input type="submit">
  </div>
</form>

IMG_4913.PNG

あれ…入力されない…

色々試してみたところpasswdという名前の欄を追加すると再現することが分かった。(現象が発生したページにも存在する)

<form method="POST">
  <div>
    email<input type="text" name="email">
  </div>
  <div>
    passwd<input type="text" name="passwd">
  </div>
  <div>
    <input type="submit">
  </div>
</form>

IMG_4914.PNG

半端に略されてるのが気になりnameをpasswordにしても同様の動きをした。

ちなみにpasswdのtypeをpasswordにするとパスワードまで補完されてしまった。(name違うのに)

<form method="POST">
  <div>
    email<input type="text" name="email">
  </div>
  <div>
    passwd<input type="password" name="passwd">
  </div>
  <div>
    <input type="submit">
  </div>
</form>

IMG_4917.PNG

もう少し調べた

ユーザー名っぽい名前の欄とパスワードっぽい名前の欄があるとログインフォームだと判定されるのか、保存してあるユーザー名をユーザー名っぽい欄に入れることが分かった。

<form method="POST">
  <div>
    foo<input type="text" name="foo">
  </div>
  <div>
    username<input type="text" name="username">
  </div>
  <div>
    bar<input type="text" name="bar">
  </div>
  <div>
    passwd<input type="text" name="passwd">
  </div>
  <div>
    <input type="submit">
  </div>
</form>

IMG_4915.PNG

ユーザー名っぽい名前の欄が無ければパスワードっぽい名前の欄の直前に入る模様

<form method="POST">
  <div>
    foo<input type="text" name="foo">
  </div>
  <div>
    bar<input type="text" name="bar">
  </div>
  <div>
    passwd<input type="text" name="passwd">
  </div>
  <div>
    <input type="submit">
  </div>
</form>

IMG_4916.PNG

色々試してみた

ユーザー名っぽい名前

  • email
  • id
  • login_id
  • user_id
  • login_name
  • user_name
  • username
  • loginname

ユーザー名っぽくない名前

  • user
  • name
  • loginid
  • userid

パスワードっぽい名前

  • passwd
  • password
  • user_passwd
  • login_passwd

パスワードっぽくない名前

  • pass
  • pwd
  • pword
  • userpasswd
  • loginpasswd

ユーザー名っぽくない文字列同士でも組み合わせるとユーザー名っぽい文字列になったりする。
パスワードはpasswd、passwordあたりが単語として含まれていると認識される?
よくわからない。

結局

パスワードっぽかった欄の名前をパスワードっぽくない名前に変更することで凌いだ。

関連してそうな記事

iOS 9.0.1のSafariでログインフォームの自動入力が効かない

逆に自動入力してくれない話。
バージョンが近いし何か怪しい…

Safariのオートコンプリートの不思議な挙動

iOSの話ではないけど似た挙動の話。
この記事のオートコンプリートを抑止する方法は、パスワードっぽい欄のtypeがpasswordならiOSでも有効だった。

tateren
正規表現と文字コードが好き
http://tateren.hateblo.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away