悪い考え - ブラウザはテキスト フィールドを記憶しますが、パスワードの場合のように自動的に入力することはありません。代わりに、すべての人が見られるオートコンプリートとしてパスワードを提案します。また、キーストロークを読み取るよりも、誰かの肩越しにパスワードを読み取る方がはるかに簡単だと思います。
一部のブラウザーがパスワードのオートコンプリート オプションを尊重しない理由は、おそらく、パスワード データを処理/保存するための別の (理論的にはより安全な) 方法によってパスワードが処理されるためです。 .
結局のところ、ブラウザーが記憶する内容を実際に制御することはできないため、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 以外のユーザーにもオプションを提供できます (オートコンプリートによって危険にさらされるユーザーが少なくなります)。