web-dev-qa-db-ja.com

Google chromeすべてのパスワード入力を自動入力する

私の問題

サイトのログインを自動入力するためにGoogleを有効にしておく必要がありますが、アカウント情報を編集したり、(管理者として)別のユーザーアカウント情報を編集するたびに、そのログインデータを自動入力しようとしています。それは奇妙な場所に私のデータを埋めます。問題は、Chrome autoがすべての入力にパスワードのタイプを入力し、それより前の入力が何であれ(下の画像を参照)) 。選択ボックスをその前に配置すると、自動入力されません。

Google autofilling registration with login details

明らかに、ユーザーを編集するたびにパスワード/電話を削除する必要はありません。また、ユーザーが自分のアカウントを編集しているときに、ユーザーがそのようにする必要はありません。どうすれば削除できますか?

試したこと(成功なし)

  • Autocomplete = "off"をフォームと電話とパスワードの両方の入力に追加します。
  • 両方の入力にvalue = ""を追加する
  • パスワード入力のname =を変更します。 pw、pass、password、cheeseを試しました(incase chromeが名前を拾っていた)
  • Jquery .attrを介してautocomplete = "off"を追加する

私が見つけたもの

Googleは意図的にオートコンプリートを無視している可能性があることがわかりました: Googleはオートコンプリートを無視します

別のユーザーが同様の質問を投稿しているのを見つけましたが、解決策が機能していません: Disable Chrome Autofill

また、別のユーザーがGoogleのオートコンプリートを取得する隠しパスワードフィールドの作成に関連する回避策を行っていることを発見しました。私の場合、両方を自動入力しないようにするためにその上に隠された入力が必要になるため、よりクリーンなソリューションを希望します:- chromeでオートフィルを無効にする

20
Samir

オートコンプリート属性を備えたHTML5には、この問題を克服するために使用できる「new-password」という新しいプロパティがあります。私のために次の作品。

<input id="userPassword" type="password" autocomplete="new-password">

current-password:ブラウザーまたはパスワードマネージャーがサイトの現在のパスワードを入力できるようにします。これにより、ブラウザまたはパスワードマネージャは、新しいパスワードではなく、現場で現在知られているパスワードを使用することを知ることができるため、「オン」よりも多くの情報が提供されます。

new-password:ブラウザまたはパスワードマネージャーがサイトの新しいパスワードを自動的に入力できるようにします。これは、コントロールの他の属性に基づいて自動的に生成されるか、単にブラウザーに何らかの「推奨される新しいパスワード」ウィジェットを提示するように指示する場合があります。

参照: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/password

30
PRTJ

時々autocomplete = off入力を妨げない間違ったフィールドに資格情報を入力しますが、ユーザーまたはニックネームのフィールドには入力しません。

修正:ブラウザーは読み取り専用モードで自動入力され、フォーカス時に書き込み可能に設定されます

 <input type="password" readonly onfocus="this.removeAttribute('readonly');"/>

(フォーカス=マウスクリックおよびフィールドのタブ移動)

更新:Mobile Safariはフィールドにカーソルを設定しますが、仮想キーボードは表示しません。新しい修正は以前と同様に機能しますが、仮想キーボードを処理します。

<input id="email" readonly type="email" onfocus="if (this.hasAttribute('readonly')) {
    this.removeAttribute('readonly');
    // fix for mobile safari to show virtual keyboard
    this.blur();    this.focus();  }" />

ライブデモ https://jsfiddle.net/danielsuess/n0scguv6/ // UpdateEnd

説明:ブラウザは資格情報を間違ったテキストフィールドに自動入力しますか?

@Samir:Chromeはすべての入力をパスワードのタイプで自動入力し、それより前の入力はすべて入力します

同じフォームにパスワードフィールドがある場合、ChromeとSafariでこの奇妙な動作に気付くことがあります。ブラウザーは、保存された資格情報を挿入するためのパスワードフィールド。自動入力username、パスワードフィールドの前に表示される最も近いtextlike-inputフィールド DOMで(推測のみ)観察のため)。ブラウザは最後のインスタンスであり、制御できないため、

上記のこの読み取り専用の修正は私のために働いた。

8
dsuess

これはハッキングなしで解決できますが、必ずしも直感的ではありません。 Chrome=が行う2つの奇妙な決定があります。最初に、Chromeは解析でautocomplete="off"を無視し、2番目にChromeは、パスワードフィールドの前にあるフィールドがユーザー名/メールフィールドでなければならず、そのようにオートコンプリートされる必要があることを前提としています。

ただし、HTML5のオートコンプリート属性仕様を活用する方法はいくつかあります。

以下のリンクでわかるように、属性autocompleteには標準値があります。 Chromeパスワードの前のフィールドが電子メールフィールドであると仮定して、電話番号の場合はtelなど)を使用するか、リストに存在しないが、offまたはfalseでもない値。

Googleでは、new-のように、値の前にautocomplete="new-tel"を追加した標準値のいずれかを使用することをお勧めします。パスワードフィールドをオートコンプリートにしたくない場合は、たとえばautocomplete="new-password"を使用できます。

技術的にはもちろん、同じ効果のためにコンテキストなしで属性をランダムにすることができますが(例:autocomplete="blahblahblah")、コードで作業する将来の開発者に何らかのコンテキストを与えるのに役立つので、new-プレフィックスをお勧めしますこの属性で達成しています。

参照: https://html.spec.whatwg.org/multipage/forms.html#autofilling-form-controls:-the-autocomplete-attribute

8
Rob Porter
  • 偽の入力は機能しません
  • autocomplete = "off"/"new-password"/"false"などは機能しません。chromeそれらをすべて取り込みます

workedのソリューション:

<script>
        $(document).ready(function(){

            //put readonly attribute on all fields and mark those, that already readonly
            $.each($('input'), function(i, el){
                if ($(el).attr('readonly')) {
                    $(el).attr('shouldbereadonly', 'true');
                } else {
                    $(el).attr('readonly', 'readonly');
                }
            });

            //Remove unnecessary readonly attributes in timeout
            setTimeout(function(){

                $.each($('input'), function(i, el){
                    if (!$(el).attr('shouldbereadonly')) {
                        $(el).attr('readonly', null);
                    }
                });

            }, 500);
        });
    </script>

2
Denis Matafonov

Chromeの自動入力を無効にする代わりに、非表示のパスワードフィールドを作成します。自動入力を無効にしても、全員に対して無効になるわけではありません。

だからこれを得た。

<input type="hidden" name="Password" id="Password" value="Password" /><br />

(自分で無効にするだけの場合は、Chromeの設定を使用して無効にします。)

Chrome設定で無効にする方法:

Click the Chrome menu Chrome menu on the browser toolbar.
Select Settings.
Click Show advanced settings and find the "Passwords and forms" section.
Deselect the "Enable Autofill to fill out web forms in a single click" checkbox.

クレジットはheinkasnerに送られます。

これらの2つの方法以外では、すべてのユーザーに対して無効にすることは不可能だと思います。

1
unknownA

Chromeには更新プログラムがあり、偽の入力はもう機能していません。

Chromeは、成功した200のネット接続の後、すべてを記憶しているように見えます。画面でアクティブ化されたinput [type = password]が記憶されます。

入力を動的に設定してテキストを入力し、内容をクリアしようとしましたが、特にフォームを送信する前に検証コードを取得するボタンがある場合は、常に機能するとは限りません。

最後に、私はそれを理解しました:

入力フォーカスとぼかしイベントを聞き、

毎回のぼかし:

var psw1 = $('input[name=psw1]').val();
$('input[name=psw1]').val((new Array(psw1.length)).join('*'));
$('input[name=psw1]').attr('type', 'text');

常に焦点:

$('input[name=psw1]').attr('type', 'password');
$('input[name=psw1]').val(psw1)

副作用は明らかです。入力のコンテンツはすべてのフォーカスイベントとブラーイベントを変更しますが、このメソッドはchromeがパスワードを完全に記憶するのを防ぎます。

0
pimkle