3

私はそれを調査しましたが、ブラウザが自動入力を防止し、標準のログインフォームでパスワードを記憶しないようにする標準的で信頼できる方法を見つけることができません。

私はモバイル Web アプリで作業しているので、これは私にとって重要です。そのため、ユーザーがログアウトをクリックし、他の誰かが自分の電話を手に入れた場合、ブラウザーはパスワードを渡すだけで彼らを助けるべきではありません!

私が思いつく唯一の解決策は、パスワード フィールドを type="text" にすることです。

確かに、これは人々が「肩越しにサーフィン」してユーザーが入力しているものを見ることができることを意味しますが、同じ人がユーザーの指を見るだけで、入力しているパスワードを簡単に見ることができます...

type="password" 文字マスクが悪意のあるキーロガーなどの行為を阻止するとは思わないため、ここでもスパイウェアが実際の問題であるとは思いません。

では、パスワード フィールドに type="text" を使用することで見逃した可能性のあるセキュリティ上の懸念が他にあるのではないかと考えています。

このアイデアを入力の動的/ランダムな「名前」属性と組み合わせると、勝者になる可能性がありますか?

注意 - ソリューションは XHTML Mobile Profile に準拠している必要があります。

また、ここで意味的に正しいことについて私にアドバイスすることは控えてください。私の優先事項はセマンティクスではなくセキュリティです。:)

4

1 に答える 1

5

悪い考え - ブラウザはテキスト フィールドを記憶しますが、パスワードの場合のように自動的に入力することはありません。代わりに、すべての人が見られるオートコンプリートとしてパスワードを提案します。また、キーストロークを読み取るよりも、誰かの肩越しにパスワードを読み取る方がはるかに簡単だと思います。

一部のブラウザーがパスワードのオートコンプリート オプションを尊重しない理由は、おそらく、パスワード データを処理/保存するための別の (理論的にはより安全な) 方法によってパスワードが処理されるためです。 .

結局のところ、ブラウザーが記憶する内容を実際に制御することはできないため、js を使用しない決定的な解決策はないと思います。ヒントと提案のみを提供できます。これは、ブラウザごとに異なる方法で処理されます。あなたの最善の策は、追加することから始めることです:

autocomplete="オフ"

あなたのフォームと入力に。ほとんどのブラウザーで動作しますが、すべてではありません。

上記は、フォームタグとパスワード入力タグに入れられます。次のようになります。

<form id="form1_randomstring" name="form1" method="post" action="process.php" autocomplete="off">
<input name="password_randomstring" type="password" value="">

質問で言ったように、フォーム名と入力名をランダム化すると、一部のブラウザが別のフォームを扱っていると思わせるようになります。

また、ssl を使用する場合、ブラウザーは何を記憶するかについて非常に保守的になります。したがって、これが役立つ場合があります。

最後に、もう 1 つの保護層として、docready でフォーム フィールドを手動でクリアするために少し onload jquery を使用できます。

$("input[type='password']").val('');

jsを実行していない場合は明らかに役に立ちません。

決定的な解決策 (たぶん?) さらに一歩進んで、ajax 呼び出しを使用してフォーム フィールドを挿入することができます (さらに、ランダムなフォーム名を生成し、オートコンプリートし、ssl を介してページを提供します)。つまり、ログオンにはjsが必要ですが、フィールドがクリアされていることを確認し、ページの読み込み後にフォームを生成できます. 私はそれを完了するために任意のブラウザーに挑戦します。

そのオプションを選択した場合、外側のページと ajax をロードしたページの両方を SSL 経由で実行する必要があります。考慮されます。)

要件とユーザーベースによっては、これが最も保証されたオプションになる可能性があります。

ノート

Autocomplete="off" は、厳密な XHTML 検証に合格しない場合があります。オプションは、jquery を使用してページをロードした後に autocomplete 属性を追加することです (これもまた、js を有効にしないと機能しません)。

$('#form1').attr('autocomplete', 'off');

追加のポイントとして、キーロガーを防ぐ最も簡単な方法は、選択オプションのドロップダウンボックスを提供し、パスワードから文字/数字を入力するように依頼することです. 実際には、パスワードを英数字に制限し、一連のドロップダウンでパスワードから少なくとも 3 つの文字/数字を入力するようにユーザーに依頼する必要があります。

概要

完璧な解決策はありませんが、多くの選択肢があります。何が適切かを検討する必要があります。メインメソッドとして ajax 呼び出しに行くかもしれません。最初にフォームへのリンクをロードし、それを ajax コンテンツに動的に置き換えることで、js 以外のユーザーにもオプションを提供できます (オートコンプリートによって危険にさらされるユーザーが少なくなります)。

于 2013-02-09T13:27:19.437 に答える