web-dev-qa-db-ja.com

Enterキーを押してログインを防止します-隠すことによるセキュリティ?

私が使用しているオンラインバンキングサイトには、ユーザーがEnterキーを押してログインフォームを送信できないようにする「機能」があります。たとえば、[ユーザー名]フィールドにユーザー名を入力した場合、Enterキーを押すと、「ログインをクリックしてログインしてください」というメッセージが表示されます。

ほとんどのユーザーは、マウスを使用してポイントアンドクリックします。ただし、実際には、Tabキーを押してフォーカスをボタンに移動し、Spaceキーを押してフォームを送信することもできます。

  1. 「Enterキーを押してフォームを送信しないようにする」または「ユーザーにマウスを使用するように求める」ことは、隠すことによるセキュリティのケースだと思いますか?彼らは画面上のキーボードを使用していませんが、キーロガーを回避することになっていると私は信じています。

  2. この措置はどのような種類の攻撃/脅威を回避する可能性がありますか?

1
jingtao

この決定はセキュリティにまったく関係がなかったと思います。おそらく、ユーザーが入力キーの動作のために、準備が整う前に誤ってフォームのフォーカスを変更してしまうという問題がありました。 Facebookはこれについて非常に悪いです。

この会社は、Enterキーがcr/lfを挿入する以外のことを行わないようにするオプションをユーザーに提供したかっただけです。

1
Jim In Texas

一部の銀行には、公開鍵やハッシュアルゴリズムなどを使用してクライアント側でデータを暗号化/ハッシュし、それを送信するJavaScriptがあります。 JavaScriptが無効になっているコンピューターでEnterキーを押してフォームを送信すると、詳細が「クリアで」送信されます(注:SSLを使用している場合、サイトはSSLで暗号化されている可能性がありますが、ログインの詳細はSSLセッション内でクリアに送信されますしたがって、JavaScriptがアクティブな場合、MITMerはそれらにアクセスできないのと比較して、それらにアクセスできます。したがって、攻撃者はJavaScriptを無効にしてクリアテキスト送信を強制し、攻撃者のスピードバンプを1つ削除できるため、攻撃者はSSL + JS暗号化ではなくSSLのみを処理する必要があります。明確なaction = ""または指定されていないアクションは、フォームをフォームと同じページに送信することに注意してください。したがって、JavaScriptが無効になっているコンピューターのフォーム送信を完全に無効にする絶対確実な方法はありません。

ここでの銀行は、代わりにJavaScript関数を呼び出すinput type = "button"と、入力フィールドOUTSIDEフォームタグを使用しています。これにより、フォームが効果的にロックされ、JavaScriptでのみ機能します。多くの顧客はEnterキーを押しますが、入力フィールドがフォームに含まれていないため何も実行されません。したがって、Enterキーのダーティチェックを追加し、Enterキーを押すと、ボタンを使用するようにメッセージを表示するだけです。

0