またはFirefoxはパスワード/ユーザー名の行き先をどのように判断しますか?
入力要素の名前、ID、タイトル、クラスを変更すると、Firefoxはパスワードまたは電子メールで入力し続けます。
またはFirefoxはパスワード/ユーザー名の行き先をどのように判断しますか?
入力要素の名前、ID、タイトル、クラスを変更すると、Firefoxはパスワードまたは電子メールで入力し続けます。
Firefoxのソースコードを正しく理解している場合、ブラウザは最初にフォーム内のパスワードフィールドを探します。フォームに3つ以上のパスワードフィールドが含まれている場合、自動入力機能はそのフォームを無視します。
1〜3個のパスワードフィールドが見つかった後、ブラウザはログインフィールドを探します。ブラウザは最初のパスワードフィールドから逆方向検索を実行し、ログインフィールドがタイプtext
oremail
またはurl
orまたはtel
orの最初に見つかったフィールドであると想定しますnumber
。
次のステップは、ページの読み込み時にフォームを確認するか、フォームを送信するかによって異なります。ページの読み込み中にチェックし、ログインフィールドと正確に1つのパスワードフィールドがある場合、ケースは単純で、ブラウザはフォームに入力できます。
その他の場合(フォーム送信または複数のパスワードフィールド)は、「スマート」ロジックを実行して、どのパスワードフィールドに新しいパスワードが含まれ、どのパスワードフィールドに古いパスワードが含まれるかを判断します(おそらく保存されているパスワードを更新します)。詳細に興味がある場合は、ソースコードをダウンロードしてtoolkit/components/passwordmgr/nsLoginManager.js
ファイルを開いてください。チェックする関数は、、_fillForm
です。_getFormFields
_getPasswordFields
要約すると、Firefoxは、ログインまたはパスワードのフィールドを推測するためにID、名前、またはクラス属性を必要としません。タイプとフォームフィールドの順序に依存するだけです。
これまでのところ機能している簡単なソリューションを試しました。2 つの非表示フィールドを作成すると、ブラウザーがそれらを自動入力します。
<input type="text" style="display: none">
<input type="password" style="display: none">
ログインとパスワードの入力の間に無効な入力テキストを使用すると、うまくいくようです:
<input type="text" disabled="disabled" style="display:none">
フォーム上の要素はこれらの 2 つだけですか? Firefox は、フォームの構造 (2 つの入力ボックス、1 つは通常のフラグ、もう 1 つはパスワードのフラグ) を保存し、入力要素の ID に関係なく、保存された情報を入力している可能性があります。
これを試してください: フォームに追加の入力要素を追加して、何が起こるかを確認してください。Firefox が何も入力しないか、最初のフィールドに名前が表示され、パスワード フィールドが入力されているのに、2 番目の入力要素が空白になっていることがわかります。