web-dev-qa-db-ja.com

フォームでパスワードを明かさないようにするにはどうすればよいですか?

最近、inspect要素を使用してHTMLのソースコードを表示すると、これを変更できることがわかりました<input type="password"/>から<input type="text"/>すると、パスワードが明らかになったことがわかります。そのため、angularJSでそれを回避するにはどうすればよいですか?または純粋なJavascript?

光の中でどんな暗闇でも感謝されます。

2
napstercake

これはSecurity Theaterの悪いケースのように聞こえます

セキュリティシアターとは、実際にそれを達成するためにほとんどまたは何もせずに、セキュリティの向上を実感することを目的とした対策に投資することです。

なぜなら、現実には...

十分な時間、労力、およびコンピューティング能力のセキュリティを考えると、遅延に過ぎません。

もちろん、それよりもさらに悪化します。 Javascriptはコンピュータベースの言語です。つまり、マシンで実行する必要があります。そのマシンは、Javascriptを無視するように指示できます。


これが本当に意味することは、あなたが間違った質問をしているということです。あなたが本当に求めていること:

保存されたパスワードを使用してフォームに記入し、フォームの種類を変更して読み取るように、フォームを安全に保つにはどうすればよいですか?

そして、この答えは非常に簡単です:
端末の安全を確保してください。この種の攻撃を防止する唯一の方法は、最初に保存されたパスワードを使用するシステムで攻撃者をさせないことです。

どうして? 「スペクトル」があるからです。この簡単な例では、これをセキュリティスペクトルと呼びます。
単純なセキュリティの基礎として、次のものがあります。

セキュリティ> -------------------------------------------- -<使いやすさ

ほとんどの場合、これは何が起こるかです:
moreSecurityあなたが持っているless使いやすさがあります。
more使いやすさお持ちのlessセキュリティがあります。

パスワードが含まれているフォームを使用してそこに残すことで、あなたは増加あなたの使いやすさおよび- 減少あなたのセキュリティ

32
Robert Mennell

攻撃者が既に開発者ツールにアクセスしている場合、攻撃者がこれを防ぐ方法はありません。JavaScriptを一時停止し、攻撃者が実行していることを続行できます。あなたができる最善のことは、少しの非活動の後、パスワードボックスをクリアすることです。

10
William Dunne

肝心なのは、できないということですが、これは考えられるほどの問題ではありません

ブラウザのデバッガでソースを変更すると(説明しているとおり)、どこにも保存されないことに注意してください。これは、変更がデバッガーが実行されているマシンにのみ影響することを意味します。 全員のマシンで、パスワードフィールドを「テキスト」に変更することはできません。また、変更はページが次に読み込まれるまで有効になるため、一度設定しても、マシンをパスワード収集ロボットにすることはできません。

スクリプトは、その値を取得するためにパスワードフィールドのタイプを変更する必要がないことも覚えておいてください。彼らは普通の古いスクリプトを介してそれを得ることができ、そのようにすることには非常に本当の利点があります。最大のものは、フィールドのタイプを変更しないため、ユーザーには異常が表示されないため、ユーザーは何かが間違っている可能性があることを知らされません。

さて、これはすべて、あなたdoはクロスサイトスクリプティング攻撃に注意する必要があります、これは、あなたが言及するようなことを行うことができます(ただし、値を取得するためにフィールドのタイプを変更する必要はありません)。すでにいくつかの XSS攻撃を回避するためのベストプラクティス があり、 一般的なXSSフィルター回避方法 はよく知られているため、それらに対してもテストできます。これらはいずれもデバッガトリックを停止しませんが、上で概説したように、デバッガトリックを停止する必要はありません。XSSは停止します。

肝心なのは、ブラウザデバッガについて心配する必要がないことです。関連する攻撃があります心配する必要がありますが、それらは十分に研究されており、ブラウザデバッガを必要としません。

5
The Spooniest

クライアント側ですべてのことが起こっており、開発者ツールを使用してコード(html、css、javascript)にほぼ完全にアクセスできるため、これを行うことはできません。したがって、彼はjavascriptを一時停止または停止できます。

3
Pawanrai9999

これについて本当に心配している場合は、アプリケーションでパスワードを完全になくすことができます。ユーザーにユーザー名またはメールアドレスを入力してもらい、一時的なログインリンクをメールで送信してもらいます。

3
Sam

できません。フォームは、検証のためにパスワードをサーバーに送信できる必要があります。ある種の難読化手法(推奨されません)を開発した場合でも、William Dunne氏が言ったように、Javascriptを一時停止/停止することができます。

あなたはあいまいさを介してセキュリティを達成しようとしていますが、それは機能しません。

2
Mark Buffalo

Divやその他の要素を使用して、Googleフォームのテキストフィールドのような独自のテキストフィールドを作成できる場合があります。これを行った場合、ユーザーが入力すると、暗号化されたJavaScript変数の内容が変更されるだけで、実際にはテキストフィールドに入力されないように設定できます。

0
reeddeer