web-dev-qa-db-ja.com

Webサイトがフォームまたはフィールドのオートコンプリートを無効にできるようにする必要がありますか?

現在、formというHTML input/autocomplete属性があり、offに設定すると、そのフォームまたは要素のオートコンプリート/オートフィルが無効になります。

一部の銀行では、これを使用してパスワードマネージャーが機能しないようにしています。最近のYahoo Mailのようなサイトも、パスワードマネージャーは安全ではないと感じているため、同様のことをしているようです。

数週間前、私はFirefoxに feature を実装しました。これにより、username/password fields onlyに対してこれを上書きするオプションをユーザーに提供します(つまり、パスワードマネージャーを無効にします)。これで リクエスト になり、デフォルトでautocomplete=offをオーバーライドするように求められます。問題を引用する:

この動作は、パスワードマネージャーが有害であると考え、効果が出ないようにしたいサイトにとっては譲歩です。全体として、私はそれらのサイトは一般的に間違っていると思います、そして私たちの行動をそれほど制御すべきではありません。

これは、 このコメントのBenBによる と同じ理由で、私には理にかなっています。

autocomplete = offは最近よく乱用されています。 Yahooはログイン(webmailとmy.yahoo.comを含む)にそれを使用し始めたので、私はYahooの使用をやめた。ウェブメールアプリ-いくつかのより大きなプロバイダーでさえ-今やそれを使用していますが、それは明らかに目的ではありませんでした。管理者は非常に独善的であり、パスワードの保存は「安全でない」ため、これを「セキュリティのため」に維持するように要求します。

彼らは誤解されています、なぜなら

  • キーボードロガーが存在し、広く普及しています。Firefoxのパスワードストアを読み取ることができるマルウェアよりもおそらく広まっています。
  • 小さな甥による単純な攻撃さえ存在します:ただ肩越しに見てください
  • おそらく最も重要なことは、ユーザーがパスワードを再入力するように強制するたびに、実質的にユーザーに単純なパスワードを使用することを強制することです。覚えやすく、入力も簡単で、おそらく複数のWebサイトでも使用されます。これは明らかに全体的なセキュリティを劇的に低下し、セキュリティに危険をもたらします。

そのため、autocomplete = offはセキュリティにとって積極的に有害です。

また、顧客との関係全体を切断することを除いて、エンドユーザーに再帰を与えることなく、エンドユーザーに多大な苦痛を与えます。

インターネットに投稿された多くの回避策(通常はブックマークレットベース)があります。 IE11はautocomplete=off のサポートをすでに削除しています。

問題は2つあります。

  • パスワードフィールドにautocomplete=offを使用すると、Webサイトのセキュリティが大幅に向上しますか?それとも、BenBのコメントのとおり、実際にはセキュリティに有害ですか?
  • ブラウザはデフォルトでこの属性を許可し、Webサイトにこれほど多くの制御を与える必要がありますか? (これは主観的なもので、答えないでください)

私の状況はユーザー名/パスワードフィールドのautocomplete=offに固有ですが(コードはパスワードマネージャーにのみ影響します)、autocomplete=offを無効にするという広い側面についての入力を歓迎します

102
Manishearth

問題は、この1つの設定が、ブラウザー内の2つの類似しているが十分に異なる関数の動作を同時に制御しているため、最適な結果を得ることが難しいことです。

まず、「スマート」、「ナイーブ」、「自動」のオートコンプリートと呼ばれるものがあります。

これは元のオートコンプリート技術です。さまざまなサイトでフォームに入力すると、ブラウザはフォームの名前と入力した内容を監視し、詳細を静かに記憶します。次に、似たようなフォームの別のサイトにアクセスすると、他のサイトでの以前の動作からフィルタリングした値を使用してフィールドに「有効に」入力します。

ここでの考え方は、構成や意思決定なしで時間を節約することです。あなたの名前を記入しますか?前回使用した名前が自動的に入力されます。クレジットカードに記入?他の場所で使用したクレジットカードに記入します。

役立つことへの熱意の中で、ブラウザは、あなたが望むものである場合に備えて、あるサイトからの秘密を他のすべてのサイトと共有しています。セキュリティの観点から見ると、これは明らかな理由のすべてと、自明ではないいくつかの理由による災害です。これは無効にする必要があり、おそらく最初から実装されていないはずです。

次に、「明示的」または「安全」または「設定済み」のオートコンプリートがあります。

これは、主に、保存されたユーザー名とパスワードの世界です。この具体化では、ブラウザは明示的な承認がある場合のみフォームデータを保存します。理想的には、そのデータを暗号化されたストアに格納します。最も重要なのは、データが単一のサイトにしっかりと関連付けられていることです。つまり、FacebookのパスワードはFacebookに残り、AmazonのアドレスはAmazonに残ります。

この手法は、一致する環境が検出されたときにブラウザーが保存された動作を再生するという点で非常に異なります。比較すると、他の手法は、類似点を探すことにより、望ましい動作を自動的に予測します。

サイトにアクセスし、ログインフォームが表示されると、ブラウザは、その目的で明示的に保存したデータを自動入力するのに役立ちます。インタラクションはユーザーにとって迅速で思慮のないものでなければなりません。そして、criticallyは、フィッシングの試みで絶対に破るべきです。ブラウザーは、フィッシングサイトに認証情報を配信することをまったく望まないはずです。そのため、ブラウザーは停止し、なぜ機能していないのかを考えます。

この機能は、プライマリフィッシング対策の防御線です。それは動作する必要があります。ユーザーが通常の状況で透過的かつ簡単に機能するこの機能に依存できない場合、避けられないless安全です。

これは主に資格情報のストレージに使用されますが、支払いカード、住所、セキュリティの質問など、他の安全なデータを置くための安全な場所でもあります。このような追加データは、おそらくサイト固有ではありませんが、おそらくプロンプトなしで自動入力しない。

それらすべてを支配する1つのオプション

ここでの問題は、多くの実装でautocomplete=falseオプションは両方の動作を制御します。残したいものと殺したいものの両方。

理想的には、「安全な」オートコンプリートを無効にしないでください。安全性を高めるためにこの機能に依存しているので、見当違いのサイト運営者がそれを危険にさらすことは許されるべきではありません。

そして理想的には、「自動」オートコンプリートはデフォルトで無効にして、実際に欲しいまれな条件(ある場合)に対してのみ有効にする必要があります他のサイトからの入力を再利用するブラウザ。

56
tylerl

ペンテストを行うとき、フォームフィールドが機密データ(クレジットカード番号など)を要求し、パスワードフィールドではなく、autocomplete = offがない場合に問題を報告します。

合理的なのは、ブラウザがパスワードのオートコンプリートを非常に慎重に管理することです。これにより、ユーザーはパスワードを保存するかどうかを選択でき、(ほとんどの)ユーザーは賢明な決定を下すことができます。

ただし、パスワード以外のフィールドでは、オートコンプリート動作は望ましくありません。誰かにコンピューターの使用を許可すると、eコマースのチェックアウトページに移動し、クレジットカードの詳細がオートコンプリートされます。これは悪いことです。

42
paj28

ブラウザがautocomplete=offを無視しているのは、パスワードの自動入力を無効にしようとするWebサイトがいくつかあったためです。

それは間違いです;そして2014年7月に、Firefoxは、パスワードのオートコンプリートをオフにしようとするWebサイトを無視する変更を実装した最後の主要なブラウザーでした。

ブラウザーの設定を回避しようとするWebサイトの試みは間違っています。そのため、ブラウザーはブラウザーを無視します。 Webサイトがパスワードの保存を無効にしようとする理由はわかっていません。

  • Chromeはそれを無視します
  • サファリはそれを無視します
  • IEはそれを無視します
  • Firefoxはそれを無視します

特別な snowflake の場合はどうなりますか?

良いユースケースを提起する人々がいます:

私は共有のパブリックエリアのキオスクスタイルのコンピューターを持っています。次のユーザーが使用できるように、誰かが(誤ってまたは故意に)パスワードを保存しないようにします。

それはステートメントに違反しません:

ブラウザの設定を回避するためのWebサイトの試みは間違っています

これは、共有キオスクの場合:

  • オッドボールポリシーを持っているのはweb-serverではありません
  • クライアントのユーザーエージェントです

ブラウザ(共有コンピュータ)は、itパスワードを保存しないという要件があるものです。 browserがパスワードを保存しないようにする正しい方法は、パスワードを保存しないようにbrowserを構成することです。このキオスクコンピュータをロックして制御しているので、設定を制御します。これには、パスワードを保存するオプションが含まれます。

ChromeおよびInternet Explorerでは、グループポリシー(レジストリキーなど)を使用してこれらのオプションを構成します。

Chromeポリシーリスト から:

AutoFillEnabled

オートフィルを有効にする

データタイプ:ブール(REG_DWORD)

Windowsレジストリの場所:Software\Policies\Chromium\AutoFillEnabled

説明:Chromiumのオートフィル機能を有効にし、ユーザーが住所やクレジットカード情報などの以前に保存された情報を使用してWebフォームを自動入力できるようにします。この設定を無効にすると、ユーザーはオートフィルにアクセスできなくなります。この設定を有効にするか、値を設定しない場合、オートフィルはユーザーの制御下に残ります。これにより、ユーザーはオートフィルプロファイルを構成し、独自の裁量でオートフィルのオンとオフを切り替えることができます。

パスワードのオートコンプリートを無効にしようとするのは間違っており、ブラウザは意図的にそれを実行しようとする人をすべて無視しているため、間違ったことをやめるようにしてください。

yoyourブラウザーがアイテムをオートコンプリートしないようにする場合、yoがオートコンプリートをオフにするようにyourブラウザーを設定する必要があります。他のユーザーにその設定を強制するWebサイトはありません。

8
Ian Boyd

私はいくつかの銀行に対していくつかのペンテストを行ってきましたが、オートコンプリートを無効にすることを常にアドバイスしています。これは、ほとんどのユーザーがパスワードマネージャーを使用しないため、パスワードがブラウザーのどこかにプレーンテキストで保存されるためです(一部のブラウザーは、オートコンプリートパスワードを暗号化しますが、これは最近行われたものです)。

これは OWASPテスト ガイドでも推奨されています。

フォームフィールドのキャッシュは、ほとんどのブラウザにあります。クレジットカード番号などの機密情報を含むフォームフィールドの場合、すべてのINPUTタグで使用できるAUTOCOMPLETE = OFF属性を使用してオートコンプリートを無効にする必要があります 1 。この機能は、現在のバージョンのHTML仕様に対する検証に失敗しますが、ほとんどのブラウザーでサポートされています。

機密情報が保護されている限り問題はありません。この設定の最大の問題は、共有コンピューターを使用する場合です。情報がキャッシュされるリスクは非常に大きく、無害なバイパス機能が情報を盗むだけです。ほとんどのユーザーは、ここにいるほとんどの人ほど教育を受けていないことに注意してください。

これで銀行は実際にパーソナルコンピューターと共有コンピューターのどちらを使用しているかを確認できないため、これに対するリスク評価では、オートコンプリート機能を無効にする方が良いと判断されました。

7
Lucas Kauffman

コンピュータが日常的に盗まれるのを誰もが忘れているようで、ほとんどのコンピュータはWindowsを実行しています。 Windowsコンピューターにログインすることなく、ユーザーのパスワードを変更できます。

オートコンプリート情報がすべてブラウザに保存されている盗難コンピュータによって、どれほどの損害が発生すると思いますか?また、ほとんどの場合、ブラウザのオートコンプリート用のパスワード保護もないため、ブラウザがすべてのサイトのデータを入力するときにデータが暗号化されていてもいなくても、違いはありません。

すでに今日、FacebookやTwitterでの詐欺は一般的です。保存されたパスワードは、これの1つの理由です。

そして、CEOが自分のパスワードを保存し、誰かが自分のコンピュータを盗んだ場合はどうなりますか?この機能は、アカウントが乗っ取られるのを防ぐためのものです。

0
Nisse