web-dev-qa-db-ja.com

HTMLパスワードフィールド

パスワード変更サービスを提供するHTMLページにいるとします。一部のWebサイトでは、パスワードフィールドに以前のパスワードが表示されますが、これを読み取ることはできません。フィールドでパスワードを取得することは可能ですか? (例:ソースコード、HTTPセッションのスニッフィング?)

HTMLはこのフィールドの「セキュリティ」をどのように処理しますか?

4
user69377

フィールドに実際の古いパスワードが含まれている場合は、HTMLページのソースを確認してパスワードを取得できます。ただし、通常は、「これは古いパスワードでした」のようなプレースホルダーのみがあり、ユーザーがパスワードを変更したかどうか、または数式内の何かが変更されたかどうかを検出するために使用されます。適切なセキュリティが設定されている場合、クリアテキストのパスワード自体はサイトに認識されないため、古いパスワードをフォームに入力することもできません。これは、パスワードが不可逆的な方法で保存されているためです( を参照してください)。インターネットに保存されています。 )。

15
Steffen Ullrich

一部のWebサイトでは、以前のパスワードをパスワードフィールドに入力しますが、これを読み取ることはできません。

パスワードフィールドにポイントまたはアスタリスクが表示されるのは、ブラウザがユーザー名とパスワードを記憶し、ページが読み込まれたときにフィールドに入力されるためです。

時々、ほとんどの場合パスワード変更フォームでは、「古いパスワード」がアスタリスクのセットとして表示されます。サーバーはパスワードまたはその長さをクライアントに送信しないでください。代わりに、アスタリスクの定数またはランダムな長さの文字列を使用する必要があります。

パスワードについて従うべきいくつかのルールがあります。パスワードをクライアントに送信しないでください。コンピューターが盗まれたか、他の誰かが使用している可能性があります。ユーザーが同じパスワードを何度も使用する傾向があるため、異なるサイトの他のアカウントが侵害される可能性があります。

さらに、パスワードをサーバーに保存しないでください。代わりに salt-hash メソッドを使用する必要があります。これにより、データベースが盗まれた場合にパスワードを総当たりすることが困難になります。また、不注意なプログラマがパスワードをクライアントに送信することも防ぎます。

これはほとんどのサイトが従うベストプラクティスですが、設計者は異なる方法で、多くの場合危険な方法で作業を行うことができます。私はあなたがウェブサイトのソースを読んで、物事がどのように行われるかを理解することを試みることをお勧めします。

7
edmeme

ブラウザに保存され、アスタリスクで表示されているパスワードを意味する場合は、ページのソースコードを編集して入力タイプをpasswordからtextに変更するだけで、パスワードを明らかにできます。 ChromeおよびFirefoxでは、入力フィールドを右クリックして要素の検査を選択することで、ページのソースコードを表示および編集できます。

3
Ahmed Elmasry

パスワード情報が実際にサーバーによって送信されることは非常に疑わしいです。まあ、実際にそのような情報が存在すると仮定すると:

  • 受信または送信時にHTTP転送データをスニッフィングして、この種の情報を取得します。重要な情報は、受信データと送信データの一部である必要があります。
  • DOMからパスワード情報を取得します。

この目標を達成する可能性のあるFirefoxの2つの優れたアドオンについて触れておきます。データの改ざん:HTTPデータをキャッチするFirebug:DOMおよびHTMLを検索する

パスワードがプレーンテキストではないという問題に直面するかもしれません。これは、データがなんらかのスクリプトによってクライアント側で復号化される必要があることを示している可能性があります。次に、情報が本物であるショットシーケンスのみが存在します。これ以上のセキュリティはすべて、サーバー側の検証プロセスに依存するはずです。これがセキュリティを保証する最良の方法であるように見えても、プロセスの大部分はフロントエンドに依存しているため、脆弱です。

全体としては、このプロセスに使用される実際のセキュリティシーケンスに本当に依存します。

正規のデータを取得する最良の方法は、クライアントがデータを送信している間に、データが送信される前に暗号化プロセスがないことを想定しています。

HTML自体がそのような種類のデータを処理するための高度な機能を提供し、コンテンツを非表示にするだけだとは思いません。

ただし、データはクライアント側のスクリプトによって処理され、情報を秘密にしておくことを強く想定しています。これは、不足しているセキュリティを補うための最良の方法です。また、データはパスワードではなく、ハッシュまたはトークンである可能性があります。

これはあなたのケースの簡単な例です:

<!DOCTYPE html>
<html>
<body>

Type the secret code:
<input id="Passwd" name="Passwd" type="password" placeholder="Passwort" class="" value="catchme">
<p>Click the button to return the value of secret code.</p>

<button type="button" onclick="myFunction()">Try it</button>

<script>
function myFunction() {
    alert(document.getElementById("Passwd").value);
}
</script>

</body>
</html>

オンライン: https://jsfiddle.net/naheb7f8/ XSS警告ポップアップが表示される場合があります。

2
Noli