From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../ja/web/html/element/input/password/index.html | 315 +++++++++++++++++++++ 1 file changed, 315 insertions(+) create mode 100644 files/ja/web/html/element/input/password/index.html (limited to 'files/ja/web/html/element/input/password/index.html') diff --git a/files/ja/web/html/element/input/password/index.html b/files/ja/web/html/element/input/password/index.html new file mode 100644 index 0000000000..16dbe563b6 --- /dev/null +++ b/files/ja/web/html/element/input/password/index.html @@ -0,0 +1,315 @@ +--- +title: +slug: Web/HTML/Element/input/password +tags: + - Element + - Forms + - HTML + - HTML Input Types + - HTML Inputs + - HTML Password Input + - HTML forms + - HTML input tag + - Input Types + - Reference + - Web + - password +translation_of: Web/HTML/Element/input/password +--- +
{{HTMLRef("Input_types")}}
+ +

<input> 要素の password 型は、パスワードを安全に入力する方法を提供します。この要素はプレーンテキストの 1 行編集コントロールとして表示され、そのテキストは読み取られることがないように、1 つ 1 つの文字がアスタリスク ("*") やドット ("•") のような記号に置き換えられ、隠されます。この文字は{{Glossary("user agent", "ユーザーエージェント")}}や {{Glossary("OS")}} によって変わります。

+ +
{{EmbedInteractiveExample("pages/tabbed/input-password.html", "tabbed-standard")}}
+ + + +

詳細な入力プロセスの動作は、ブラウザーによって異なっている場合があります。例えば、モバイル端末ではしばしば、ユーザーが思ったとおりのキーを押したかどうかを確かめることができるように、入力した文字を、隠す前に一瞬だけ表示します。これは特に、キーのサイズが小さく、押し間違いが起こりやすい、仮想キーボードの場合に役立ちます。

+ +
+

パスワードのような機密情報が含まれているフォーム (ログインフォームなど) は、 HTTPS で送信するべきです。現在では多くのブラウザーで、安全ではないログインフォームの場合に警告を行う仕組みが実装されています。詳細は安全でないパスワードを参照してください。

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
{{anch("Value", "値")}}パスワードを表す {{domxref("DOMString")}}、または空欄
イベント{{event("change")}} および {{event("input")}}
対応している共通属性{{htmlattrxref("autocomplete", "input")}}, {{htmlattrxref("inputmode", "input")}}, {{htmlattrxref("maxlength", "input")}}, {{htmlattrxref("minlength", "input")}}, {{htmlattrxref("pattern", "input")}}, {{htmlattrxref("placeholder", "input")}}, {{htmlattrxref("readonly", "input")}}, {{htmlattrxref("required", "input")}}, {{htmlattrxref("size", "input")}}
IDL 属性selectionStart, selectionEnd, selectionDirection, value
メソッド{{domxref("HTMLInputElement.select", "select()")}}, {{domxref("HTMLInputElement.setRangeText", "setRangeText()")}}, {{domxref("HTMLInputElement.setSelectionRange", "setSelectionRange()")}}
+ +

+ +

{{htmlattrxref("value", "input")}} 属性は、パスワードを入力するために使われているテキスト編集コントロールの、現在の内容である {{domxref("DOMString")}} を格納します。ユーザーが何も入力していない場合、この値は空文字列 (" ") です。{{htmlattrxref("required")}} プロパティが指定されている場合、パスワード編集ボックスが妥当となるためには、空文字列以外の値を含まなければなりません。

+ +

{{htmlattrxref("pattern", "input")}} 属性が指定されている場合、"password" コントロールの内容は、その値が検証をパスした場合のみ、妥当とみなされます。詳細は {{anch("Validation")}} を参照してください。

+ +
+

改行文字の LF (U+000A) と CR (U+000D) は "password" の値には許容されません。パスワードコントロールに値がセットされるとき、LF 及び CR は値から取り除かれます。

+
+ +

追加の属性

+ +

型に関係なくすべての {{HTMLElement("input")}} 要素を操作する属性に加え、 password 型の入力欄は次の属性にも対応しています。

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
属性説明
{{anch("maxlength")}}値が取りうる UTF-16 文字単位での最大長
{{anch("minlength")}}妥当と判断される最小文字数
{{anch("pattern")}}妥当と判断されるために、入力欄の内容が一致する必要がある正規表現
{{anch("placeholder")}}空欄の時に入力欄に表示される入力例の値
{{anch("readonly")}}入力欄の内容を読み取り専用にするかどうかを示す論理属性
{{anch("size")}}入力欄の長さを何文字分にするかを表す数値
+ +

{{htmlattrdef("maxlength")}}

+ +

ユーザーがパスワード入力欄に入力することができる (UTF-16 コード単位での) 最大文字数です。 0 以上の整数値である必要があります。 maxlength が指定されていないか、無効な値が指定されていると、パスワード入力欄には最大文字数が設定されません。この値は minlength の値以上である必要もあります。

+ +

フィールドに入力されたテキストの長さが UTF-16 コード単位で maxlength の長さを超えていると、その入力欄は制約検証に失敗します。

+ +

{{htmlattrdef("minlength")}}

+ +

ユーザーがパスワード入力欄に入力することができる (UTF-16 コード単位での) 最小文字数です。これは非負の整数値で、 maxlength で指定された値以下である必要があります。 minlength が指定されていないか、無効な値が指定されていると、パスワード入力欄には最小文字数が設定されません。

+ +

入力欄のテキストの長さが UTF-16 コード単位で minlength の長さよりも短いと、その入力欄は制約検証に失敗します。

+ +

{{htmlattrdef("pattern")}}

+ +

{{page("/ja/docs/Web/HTML/Element/input/text", "pattern-include")}}

+ +

pattern の使用はパスワード入力において、ユーザーが幅広い種類の文字クラスを使用した有効なパスワードを選択して使用するのに役立ちます。パターンを使用すると、大文字・小文字の規則、数桁の数字や区切り記号などの使用を義務づけることができます。詳細と例については{{anch("Validation", "検証")}}の節を参照してください。

+ +

{{page("/ja/docs/Web/HTML/Element/input/text", "placeholder", 0, 1, 2)}}

+ +

{{htmlattrdef("readonly")}}

+ +

論理属性で、存在すれば、ユーザーが編集することができないことを表します。しかし、 value は、 JavaScript コードから直接 {{domxref("HTMLInputElement.value")}} プロパティを設定することで変更することができます。

+ +
+

注: 読み取り専用フィールドは値を持てないため、 requiredreadonly 属性も指定されている入力欄には効果がありません。

+
+ +

{{page("/ja/docs/Web/HTML/Element/input/text", "size", 0, 1, 2)}}

+ +

パスワード入力欄の使用

+ +

パスワード入力ボックスは通常、他のテキスト入力ボックスのように動作します。主な違いは、ユーザーの近くにいる人がパスワードを読み取ることを防ぐために、その内容を隠すことです。

+ +

シンプルなパスワード入力欄

+ +

以下は最も基本的なパスワード入力欄で、{{HTMLElement("label")}} 要素を使ったラベルとともに設置されています。

+ +
<label for="userPassword">Password: </label>
+<input id="userPassword" type="password">
+ +

{{EmbedLiveSample("A_simple_password_input", 600, 40)}}

+ +

オートコンプリートを許可する

+ +

パスワードを自動的に入力するため、ユーザーのパスワードマネージャを許可するには、{{htmlattrxref("autocomplete", "input")}} 属性を指定します。パスワードの場合、通常は次のいずれかの値をとります。

+ +
+
"on"
+
ブラウザー、あるいはパスワードマネージャが自動的にパスワード欄を埋めることを許可します。これは、"current-password" あるいは"new-password" を使用するほど有益ではありません。
+
"off"
+
ブラウザー、あるいはパスワードマネージャが自動的にパスワード欄を埋めることを許可しません。いくつかのソフトウェアはこの値を無視しますが、それは通常、ユーザーの安全なパスワードの実践を維持する能力を、阻害するものであることに注意してください。
+
"current-password"
+
ブラウザー、あるいはパスワードマネージャがサイトのための現在のパスワードを入力することを許可します。この値はブラウザー、あるいはパスワードマネージャに、そのサイトの既知のパスワードを自動的に入力させ、新しいパスワードを提案するものではないもので、"on" よりも多くの情報を提供します。
+
"new-password"
+
ブラウザー、あるいはパスワードマネージャが、そのサイトの新しいパスワードを自動的に入力することを許可します。これは「パスワードの変更」や「新規ユーザー」フォームの、ユーザーに新しいパスワードを求める入力欄で使われます。新しいパスワードは、パスワードマネージャによって、複数の方法で生成される場合があります。単に新しく提示されるパスワードで埋めるかもしれませんし、あるいは新しいパスワードを生成するインターフェイスを、ユーザーに見せるかもしれません。
+
+ +
+
<label for="userPassword">Password:</label>
+<input id="userPassword" type="password" autocomplete="current-password">
+
+ +

{{EmbedLiveSample("Autocomplete_sample1", 600, 40)}}

+ +

パスワードを必須にする

+ +

ユーザーのブラウザーに対し、フォームの送信前に、パスワード欄が妥当な値を持っていなければならないことを伝えるためには、ただ {{htmlattrxref("required", "input")}} 論理属性を指定するだけです。

+ +
<label for="userPassword">Password: </label>
+<input id="userPassword" type="password" required>
+<input type="submit" value="Submit">
+ +

{{EmbedLiveSample("Making_the_password_mandatory", 600, 40)}}

+ +

入力モードを指定する

+ +

推奨する、または必須となるパスワードの構文ルールが、標準キーボードよりも、代替となるテキスト入力インターフェースから恩恵を受ける場合、特定のものを要求するために {{htmlattrxref("inputmode", "input")}} 属性を使用することができます。この最も明快な用途は、 PIN のようにパスワードが数字で構成されていることを必要とする場合です。例えば、仮想キーボードを持つモバイル端末では、パスワードの入力をより簡単にするため、フルキーボードの代わりに、数字のキーパッドレイアウトに切り替えることを選択するかもしれません。 PIN が1回限りの使用であれば、 {{htmlattrxref("autocomplete", "input")}} 属性を off または one-time-code のどちらかに設定してサジェストが保存されないようにしてください。

+ +
<label for="pin">PIN: </label>
+<input id="pin" type="password" inputmode="numeric">
+ +

{{EmbedLiveSample("Specifying_an_input_mode", 600, 40)}}

+ +

長さの要件を設定する

+ +

普通、{{htmlattrxref("minlength", "input")}} 属性や {{htmlattrxref("maxlength", "input")}} 属性を使って、許容する最小の長さと最大の長さをパスワードに適用することができます。この例では、直前の例を拡張して、ユーザーの PIN が 4 〜 8文字でなければならないことを指定しています。{{htmlattrxref("size", "input")}} 属性は、パスワード入力コントロールが 8 文字分の幅であることを保証するために使用されています。

+ +
<label for="pin">PIN:</label>
+<input id="pin" type="password" inputmode="numeric" minlength="4"
+       maxlength="8" size="8">
+ +

{{EmbedLiveSample("Setting_length_requirements", 600, 40)}}

+ +

テキストを選択する

+ +

他のテキスト入力コントロールのように、 {{domxref("HTMLInputElement.select", "select()")}} メソッドを使って、パスワード欄のすべてのテキストを選択することができます。

+ +

HTML

+ +
<label for="userPassword">Password: </label>
+<input id="userPassword" type="password" size="12">
+<button id="selectAll">Select All</button>
+
+ +

JavaScript

+ +
document.getElementById("selectAll").onclick = function() {
+  document.getElementById("userPassword").select();
+}
+ +

結果

+ +

{{EmbedLiveSample("Selecting_text", 600, 40)}}

+ +

また、{{domxref("HTMLInputElement.selectionStart", "selectionStart")}} や {{domxref("HTMLInputElement.selectionEnd", "selectionEnd")}} を使って、コントロールの文字がどの範囲で選択されているかを取得または設定することができ、{{domxref("HTMLInputElement.selectionDirection", "selectionDirection")}} を使って、どの方向に選択が発生したのか(あるいは広げようとしているのか。プラットフォームに依存します。詳細は各ドキュメントを参照してください)を知ることができます。しかしながら、与えられるテキストは隠されており、その有用性は幾分か制限されています。

+ +

検証

+ +

もしアプリケーションが文字セットの制限を有している場合、あるいは入力されたパスワードの実際の内容について、他の何らかの要件がある場合には、{{htmlattrxref("pattern", "input")}} 属性を使って、パスワードがそれらの要件に合致しているか自動的に確認するための正規表現を設定することができます。

+ +

この例では、4 〜 8 文字の 16 進数の数字のみが妥当です。

+ +
+
<label for="hexId">Hex ID: </label>
+<input id="hexId" type="password" pattern="[0-9a-fA-F]{4,8}"
+       title="Enter an ID consisting of 4-8 hexadecimal digits"
+       autocomplete="new-password">
+
+ +

{{EmbedLiveSample("Validation_sample1", 600, 40)}}

+ +
+
{{htmlattrdef("disabled")}}
+
+

この論理属性は、そのパスワード欄がやり取りに利用できないことを示します。また、無効な入力欄の値は、フォームとともに送信されません。

+
+
+ +

+ +

社会保障番号を要求する

+ +

この例では、妥当なアメリカ合衆国の社会保障番号の形式に合致する入力のみが受け付けられます。これらの数字はアメリカ合衆国において、税や個人の識別を目的として使われており、その形式は "123-45-6789" です。各種、それぞれのグループ内でどのような値が許可されているかについてのルールも存在しています。

+ +

HTML

+ +
<label for="ssn">SSN:</label>
+<input type="password" id="ssn" inputmode="numeric" minlength="9" maxlength="12"
+    pattern="(?!000)([0-6]\d{2}|7([0-6]\d|7[012]))([ -])?(?!00)\d\d\3(?!0000)\d{4}"
+    required autocomplete="off">
+<br>
+<label for="ssn">Value:</label>
+<span id="current"></span>
+ +

ここでは {{htmlattrxref("pattern", "input")}} を使って、入力される値を、正当な社会保障番号を示す文字列に制限しています。明らかに、この正規表現は、妥当な SSN であることを保証していません(社会保障局のデータベースにアクセスしているわけではないので)が、その番号が SSN になり得るものであることは保証しています。一般に、値が妥当になり得ないことを避けています。加えて、3 つの数字のグループがスペース、ダッシュ ("-") で区切る、あるいは区切らないことを許容しています。

+ +

{{htmlattrxref("inputmode", "input")}} が "numeric" にセットされ、より入力しやすくするために、仮想キーボードを持つ端末が数字キーパッドレイアウトに切り替えることを支援しています。{{htmlattrxref("minlength", "input")}} と {{htmlattrxref("maxlength", "input")}} がそれぞれ 9 と 12 にセットされ、値が 9 〜 12 文字 (前者はグループ間の区切り文字無し、後者は有り) であることを要件としています。 {{htmlattrxref("required", "input")}} 属性は、このコントロールが値を持っていなければならないことを示すために使われています。最後に、 {{htmlattrxref("autocomplete", "input")}} が "off" にセットされており、これはまったくパスワードではないので、パスワードマネージャーが値をセットしようとすることを回避しています。

+ +

JavaScript

+ +

これは実にシンプルなコードで、入力された SSN を見られるように、画面に表示するためのものです。これは明らかに、パスワード欄の目的を損ねるものですが、pattern を試すには役立ちます。

+ +
var ssn = document.getElementById("ssn");
+var current = document.getElementById("current");
+
+ssn.oninput = function(event) {
+  current.innerHTML = ssn.value;
+}
+ +

結果

+ +

{{EmbedLiveSample("Requesting_a_Social_Security_number", 600, 60)}}

+ +

仕様書

+ + + + + + + + + + + + + + + + + + + + + +
仕様書状態備考
{{SpecName('HTML WHATWG', 'forms.html#password-state-(type=password)', '<input type="password">')}}{{Spec2('HTML WHATWG')}}初回定義
{{SpecName('HTML5.1', 'sec-forms.html#password-state-typepassword', '<input type="password">')}}{{Spec2('HTML5.1')}}初回定義
+ +

ブラウザーの互換性

+ + + +

{{Compat("html.elements.input.input-password")}}

+ +

関連情報

+ + -- cgit v1.2.3-54-g00ecf