[35] [[URL]] には、[DFN[[RUBYB[利用者名]@en[username]]]]と[DFN[[RUBYB[パスワード]@en[password]]]]を記述できる欄があります。

* 仕様書

[REFS[
- [34] [CITE@en[URL Standard]] ([TIME[2017-01-04 18:29:56 +09:00]]) <https://url.spec.whatwg.org/#urls>
-- [64] [CITE@en[URL Standard]] ([TIME[2017-01-04 18:29:56 +09:00]]) <https://url.spec.whatwg.org/#include-credentials>
- [53] [CITE@en[URL Standard]] ([TIME[2017-01-04 18:29:56 +09:00]]) <https://url.spec.whatwg.org/#url-parsing>
- [66] [CITE@en[URL Standard]] ([TIME[2017-01-04 18:29:56 +09:00]]) <https://url.spec.whatwg.org/#urlutils-members>
- [79] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2017-01-05 17:57:01 +09:00]]) <https://html.spec.whatwg.org/#htmlhyperlinkelementutils>
]REFS]

* URL 記録

[36] [[URL記録]]は、
[DFN[[F[[RUBYB[[[利用者名][userinfo]]]@en[username]]]]]]を持ちます。
[[利用者名]]を表します。
値は [[ASCII文字列]]です。初期値は[[空文字列]]です。 [SRC[>>34]]

[37] [[URL記録]]は、
[DFN[[F[[RUBYB[[[パスワード][userinfo]]]@en[password]]]]]]を持ちます。
[[パスワード]]を表します。
値は [[ASCII文字列]]です。初期値は[[空文字列]]です。 [SRC[>>34]]

[65] [[URL]] が[DFN[[F[[RUBYB[[[credentialsを含む]]]@en[includes credentials]]]]]]とは、
[F[利用者名][userinfo]]か[F[パスワード][userinfo]]が[[空文字列]]ではないことをいいます。
[SRC[>>64]]

* URL 文字列

** 構文

[38] 現行仕様である [CITE[URL Standard]] の [[URL文字列]]の構文の定義には、
[F[利用者名][userinfo]]や[F[パスワード][userinfo]]に相当する部分は含まれていません。

[39] つまり、[[著者]]は [[URL文字列]]を記述する時に[F[利用者名][userinfo]]や[F[パスワード][userinfo]]を含めては[MUST[ならない]]とされています。

;; [40] ただし [[URL構文解析器]]の処理の一部には組み込まれていますから、
[[Webブラウザー]]その他の [[URL]] を受け取る[[プログラム]]は、
[F[利用者名][userinfo]]や[F[パスワード][userinfo]]も扱えなければなりません。

[43] 過去の [[URL]] 仕様では、 [[URL文字列]]の [[authority]] 部分
[WEAK[([[URL scheme]]、[CODE[:][URL scheme]]、[CODE[//][authority]] の後に続く部分)]]
に [CODE[@][userinfo]] が含まれる場合、それより後は[[ホストとポート][location.host]]であり、
それより前は [DFN[userinfo]] と呼ばれていました。

[44] [[userinfo]] は、 [CODE[:][userinfo]] が含まれていればそれより前が[F[利用者名][userinfo]]で後が[F[パスワード][userinfo]]、
含まれなければ全体が[F[利用者名][userinfo]]とされていました。

[45] [F[利用者名][userinfo]]や[F[パスワード][userinfo]]は、
それぞれ0個[[以上]]の[[URL単位群]]の列とされていました。

[48] [F[利用者名][userinfo]]や[F[パスワード][userinfo]]は、[[空文字列]]とすることもできます。
しかし[[空文字列]]は既定値ですから、無指定の場合と区別できません。

-*-*-

[41] これは[F[利用者名][userinfo]]や[F[パスワード][userinfo]]を [[URL]] に含めるのは[[セキュリティー]]上好ましくないという近年の流れに沿った制限だと思われます。

[42] しかし [[Unix]] 系環境で動作する[[プログラム]]の[[環境変数]]で [[URL]]
を指定する場合、
[[Webアプリケーション]]でアクセス先の [[URL]] ([[Web Hooks]] など) を指定する場合、
[[プロキシ]]を指定する場合、
[[データベースのURL]]を指定する場合のように、
[F[利用者名][userinfo]]と[F[パスワード][userinfo]]が大いに活用されている場面もあり、
それらがすべて無くなるとも思えません。むしろ、 [[userinfo]]
を禁止することにより [[path][URL path]] や [[query][URL query]]
に埋め込んで回避しようとする動きが出る方が危険が多様化して好ましくないと感じますが...

** 構文解析

[46] [[URLの構文解析]]では、[F[利用者名][userinfo]]や[F[パスワード][userinfo]]の一部とみなされる部分を、
[[userinfo符号化集合]]を使って[[UTF-8パーセント符号化]]します。 [SRC[>>53]]

[47] つまり、[[非ASCII文字]]と多くの[[記号]]は、[[パーセント符号化]]されて
[[URL記録]]の[F[利用者名][userinfo]]や[F[パスワード][userinfo]]となります。

** 文字コード

[27] [[URL文字列]]に[[非ASCII文字]]が含まれる場合、[[URLの構文解析]]の時点で
[[UTF-8パーセント符号化]]されます (>>46)。つまり [[UTF-8]] として扱われます。

[49] [[URL文字列]]に[[パーセント符号化]]が含まれる場合、
[[URL]] の他の部分の場合と同様、元の[[文字コード]]は特に規定されていません。
つまりどの[[文字コード]]か分かりませんし、そもそも[[文字列]]であるかも保証されません。

[50] [F[利用者名][userinfo]]や[F[パスワード][userinfo]]の[[パーセント符号化]]を[[復号]]した後どのように解釈するべきかは、
現行のどの[[仕様書]]でも明文化されていないと思われます。

[51] [[Webブラウザー]]は、 [CODE(URI)@en[http:]] や [CODE(URI)@en[https:]]
で[F[利用者名][userinfo]]や[F[パスワード][userinfo]]が含まれる時、
[[パーセント復号]]して何らかの[[文字コード]]で[[復号]]して、
[[HTTP認証]]に使っているものと思われます。

;; [52] [[HTTP認証]]でどのような[[文字コード]]で[[符号化]]して送信するべきかの問題もあります。
[[基本認証]]や[[ダイジェスト認証]]も参照。

* API

[67] [CODE(DOMi)@en[URL][URL API]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[username][userinfo]]]] [[IDL属性]]の[[取得器]]は、
次のようにしなければ[MUST[なりません]] [SRC[>>66]]。

[FIG(steps)[
= [68] [[文脈オブジェクト]]の[F[URL][URLUtils]]の[F[利用者名][userinfo]]を返します。
]FIG]

[69] 同じく[[設定器]]は、次のようにしなければ[MUST[なりません]] [SRC[>>66]]。

[FIG(steps)[
= [81] [VAR[新しい値]]を、新しい値を [CODE(IDL)@en[USVString]] と解釈した結果に設定します。
= [70] [[文脈オブジェクト]]の[F[URL][URLUtils]]の[F[cannot have a username/password/port]]が[[真]]なら、
== [71] ここで停止します。
= [72] [[文脈オブジェクト]]の[F[URL][URLUtils]]と[VAR[新しい値]]について、[[利用者名の設定]]をします。
]FIG]

[73] [CODE(DOMi)@en[URL][URL API]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[password][userinfo]]]] [[IDL属性]]の[[取得器]]は、
次のようにしなければ[MUST[なりません]] [SRC[>>66]]。

[FIG(steps)[
= [74] [[文脈オブジェクト]]の[F[URL][URLUtils]]の[F[パスワード][userinfo]]を返します。
]FIG]

[75] 同じく[[設定器]]は、次のようにしなければ[MUST[なりません]] [SRC[>>66]]。

[FIG(steps)[
= [82] [VAR[新しい値]]を、新しい値を [CODE(IDL)@en[USVString]] と解釈した結果に設定します。
= [76] [[文脈オブジェクト]]の[F[cannot have a username/password/port]]が[[真]]なら、
== [77] ここで停止します。
= [78] [[文脈オブジェクト]]の[F[URL][URLUtils]]と[VAR[新しい値]]について、[[パスワードの設定]]をします。
]FIG]

[83] [CODE(DOMi)@en[HTMLHyperlinkElementUtils]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[username][userinfo]]]] [[IDL属性]]の[[取得器]]は、
次のようにしなければ[MUST[なりません]] [SRC[>>79]]。

[FIG(steps)[
= [84] [[文脈オブジェクト]]について[[URLの再初期化]]を行います。
= [85] [[文脈オブジェクト]]の[F[URL][URLUtils]]が [CODE[null]] なら、
== [86] [[空文字列]]を返し、ここで停止します。
= [87] [[文脈オブジェクト]]の[F[URL][URLUtils]]の[F[利用者名][userinfo]]を返します。
]FIG]

[88] 同じく[[設定器]]は、 [CODE(IDL xattr)@en[CEReactions]] と共に、
次のようにしなければ[MUST[なりません]] [SRC[>>79]]。

[FIG(steps)[
= [90] [VAR[新しい値]]を、新しい値を [CODE(IDL)@en[USVString]] と解釈した結果に設定します。
= [89] [[文脈オブジェクト]]について[[URLの再初期化]]を行います。
= [91] [[文脈オブジェクト]]の[F[URL][URLUtils]]の[F[ホスト][URL host]]が [CODE[null]] か、
[[文脈オブジェクト]]の[F[URL][URLUtils]]の[F[cannot-be-a-base-URL flag]]が[[真]]なら、
== [92] ここで停止します。
= [93] [[文脈オブジェクト]]の[F[URL][URLUtils]]と[VAR[新しい値]]について、[[利用者名の設定]]をします。
= [94] [[文脈オブジェクト]]について[[[CODE(HTMLa)@en[href]]を更新]]します。
]FIG]

[95] [CODE(DOMi)@en[HTMLHyperlinkElementUtils]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[password][userinfo]]]] [[IDL属性]]の[[取得器]]は、
次のようにしなければ[MUST[なりません]] [SRC[>>79]]。

[FIG(steps)[
= [96] [[文脈オブジェクト]]について[[URLの再初期化]]を行います。
= [97] [[文脈オブジェクト]]の[F[URL][URLUtils]]が [CODE[null]] なら、
== [98] [[空文字列]]を返し、ここで停止します。
= [99] [[文脈オブジェクト]]の[F[URL][URLUtils]]の[F[パスワード][userinfo]]を返します。
]FIG]

[100] 同じく[[設定器]]は、[CODE(IDL xattr)@en[CEReactions]] と共に、
次のようにしなければ[MUST[なりません]] [SRC[>>79]]。

[FIG(steps)[
= [101] [VAR[新しい値]]を、新しい値を [CODE(IDL)@en[USVString]] と解釈した結果に設定します。
= [102] [[文脈オブジェクト]]について[[URLの再初期化]]を行います。
= [103] [[文脈オブジェクト]]の[F[URL][URLUtils]]の[F[ホスト][URL host]]が [CODE[null]] か、
[[文脈オブジェクト]]の[F[URL][URLUtils]]の[F[cannot-be-a-base-URL flag]]が[[真]]なら、
== [104] ここで停止します。
= [105] [[文脈オブジェクト]]の[F[URL][URLUtils]]と[VAR[新しい値]]について、[[パスワードの設定]]をします。
= [106] [[文脈オブジェクト]]について[[[CODE(HTMLa)@en[href]]を更新]]します。
]FIG]

;; [80] [CODE(DOMi)@en[Location]] [[インターフェイス]]には
[CODE(DOMa)@en[username][userinfo]] と [CODE(DOMa)@en[password][userinfo]] はありません。

-*-*-

[54] [VAR[URL記録]]と[VAR[利用者名]]の[DFN[[RUBYB[利用者名の設定]@en[set the username]]]]は、次のようにします [SRC[>>53]]。

[FIG(steps)[
= [55] [VAR[URL記録]]の[F[利用者名][userinfo]]を、[[空文字列]]に設定します。
= [56] [VAR[利用者名]]の各[[符号位置]][VAR[符号位置]]について、
== [57] [VAR[符号位置]]に[[userinfo符号化集合]]による[[UTF-8パーセント符号化]]を適用した結果を、
[VAR[URL記録]]の[F[利用者名][userinfo]]の末尾に追加します。
]FIG]

;; [62] 他に、 [[fetch]] から呼び出されます。

[58] [VAR[URL記録]]と[VAR[パスワード]]の[DFN[[RUBYB[パスワードの設定]@en[set the password]]]]は、次のようにします [SRC[>>53]]。

[FIG(steps)[
= [59] [VAR[URL記録]]の[F[パスワード][userinfo]]を、[[空文字列]]に設定します。
= [60] [VAR[パスワード]]の各[[符号位置]][VAR[符号位置]]について、
== [61] [VAR[符号位置]]に[[userinfo符号化集合]]による[[UTF-8パーセント符号化]]を適用した結果を、
[VAR[URL記録]]の[F[パスワード][userinfo]]の末尾に追加します。
]FIG]

;; [63] 他に、 [[fetch]] から呼び出されます。

* 各 URL scheme における用法

** 利用者名と合言葉

- [8] [CODE(URI)@en[[[ftp:]]]]
- [2] [CODE(URI)@en[[[http:]]]]
- [3] [CODE(URI)@en[[[https:]]]]
- [9] [CODE(URI)@en[[[telnet:]]]]
- [4] [CODE(URI)@en[[[tn3270:]]]]

** 利用者名 (合言葉も使えるのか不明)

- [5] [CODE(URI)@en[[[rlogin:]]]]
- [10] [CODE(URI)@en[[[ssh:]]]]

** 暗号鍵

- [6] [CODE(URI)@en[[[http+aes:]]]]
- [7] [CODE(URI)@en[[[https+aes:]]]]

** ハッシュ値

[FIG(short list)[ [125] [[ハッシュ値]]を [CODE[userinfo]] として使う例
- [CODE(URI)@en[android:]]
]FIG]

** その他のプロトコル上の識別子

[FIG(short list)[
- [CODE(URI)@en[[[reload:]]]]
]FIG]

* userinfo 符号化集合

** 仕様書

[REFS[
- [30] [CITE@en[URL Standard]] ([TIME[2016-03-08 02:00:58 +09:00]] 版) <https://url.spec.whatwg.org/#userinfo-encode-set>
]REFS]

** 文字の一覧

[REFS[
- [31] [CITE@en[Character set "userinfo encode set"]] ([TIME[2016-03-08 21:14:51 +09:00]] 版) <https://chars.suikawiki.org/set/%24url%3Auserinfo-encode-set>
]REFS]

** 文脈

[33] [[URLの構文解析]]で使われます。 [[userinfo]] が含まれる入力の場合や、
[[URL]] の[F[利用者名][userinfo]]や[F[合言葉][userinfo]]を設定する時に参照されます。

* 歴史

[REFS[
- [1] [CITE[パスワード保護されたフィードをGoogle Readerからアクセスする方法 : ライフハッカー[日本版], 仕事も生活も上手くこなすライフハック情報満載のブログ・メディア]]
([TIME[2010-01-05 09:11:11 +09:00]] 版)
<http://www.lifehacker.jp/2010/01/20100104google_reader.html>
]REFS]


[11] [CITE[Issue 82250 - chromium - HTTP username:password stripped out from links - An open-source browser project to help move the web forward. - Google Project Hosting]]
([TIME[2012-05-15 12:31:08 +09:00]] 版)
<http://code.google.com/p/chromium/issues/detail?id=82250>

[12] [CITE[Masato Kinugawa Security Blog: CVE-2012-0678: Safariのfeed:// URLのUXSS]]
( ([TIME[2012-11-27 08:37:19 +09:00]] 版))
<http://masatokinugawa.l0.cm/2012/11/safari-feed-url-uxss.html>

[13] [CITE@en[Factor out set the username and password algorithms for use by XMLHttpRe... · 4e2f350 · whatwg/url]]
( ([TIME[2014-10-21 09:49:41 +09:00]] 版))
<https://github.com/whatwg/url/commit/4e2f35062170f11924a35f06abb5e2fb014e48c6>

[14] [CITE@en[Use the set the username/password algorithms · d699900 · whatwg/fetch]]
( ([TIME[2014-10-21 09:51:32 +09:00]] 版))
<https://github.com/whatwg/fetch/commit/d699900add11588f35a1d6c74987f288f975f103>

[15] [CITE@en[Throw if URL includes credentials. Fixes #26. Also more HTTPS. · whatwg/fetch@32ab411]]
([TIME[2015-04-04 11:59:46 +09:00]] 版)
<https://github.com/whatwg/fetch/commit/32ab4119f9aa5d280507d6201b0784cfe5669106>

[16] [CITE@en[479038 – Should the suspicious-auth warning apply to all loads? Should URI userinfo be banned?]]
([TIME[2015-04-05 18:48:09 +09:00]] 版)
<https://bugzilla.mozilla.org/show_bug.cgi?id=479038>

[17] [CITE@en-us[Internet Explorer does not support user names and passwords in Web site addresses (HTTP or HTTPS URLs)]]
([TIME[2015-04-05 18:48:28 +09:00]] 版)
<https://support.microsoft.com/en-us/kb/834489>

[18] [CITE@en[Copy username/password for relative URLs · whatwg/url@06b2e68]]
([TIME[2015-06-10 21:55:33 +09:00]] 版)
<https://github.com/whatwg/url/commit/06b2e6895dff2e6efaeba65f4eb1bc27ecc21581>

[19] [CITE@en[Encode { and } in username/password/path to fix #16. Also acknowledge… · whatwg/url@c296e2f]]
([TIME[2015-06-11 12:55:19 +09:00]] 版)
<https://github.com/whatwg/url/commit/c296e2f8519a1d6614d664708d368a342682c9a1>

[20] [CITE@en[Make it non-conforming to place a username and/or password in a URL. … · whatwg/url@e0c721b]]
([TIME[2015-06-16 15:08:21 +09:00]] 版)
<https://github.com/whatwg/url/commit/e0c721b680d0977013ef2a14ba578388c01bd331>

[21] [CITE@en[Use the username and password encode sets within authority state. Fix… · whatwg/url@7876306]]
([TIME[2015-06-17 16:52:39 +09:00]] 版)
<https://github.com/whatwg/url/commit/78763066648b921c51b0920493c67fc166c3e6f3>

[22] [CITE@en[Bug 26340 – Ignoring username and password from the base URL?]]
([TIME[2015-07-05 11:36:42 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26340#c2>

[FIG(quote)[
[FIGCAPTION[
[23] [CITE@en[URL scheme sequelpro:// Usage | Sequel Pro]]
([TIME[2015-01-20 10:39:03 +09:00]] 版)
<http://www.sequelpro.com/docs/URL_Scheme>
]FIGCAPTION]

> sequelpro://$SP_PROCESS_ID@chooseItemFromList/item1/item2/…

]FIG]


[24] [CITE@en[Encode more code points for usernames and passwords. Fixes #30. · whatwg/url@9ca26e5]]
([TIME[2015-08-15 11:53:55 +09:00]] 版)
<https://github.com/whatwg/url/commit/9ca26e5b0edc131f9cca81d0fef4ab92815bc289>

[25] [CITE@en[Use "include credentials" from the URL Standard rather than copying i… · whatwg/fetch@2c68504]]
([TIME[2015-08-19 23:49:57 +09:00]] 版)
<https://github.com/whatwg/fetch/commit/2c68504a5ea6c6742212a31dc357ceab12862296>

[FIG(quote)[
[FIGCAPTION[
[26] [CITE[GNU Wget 1.16.2 Manual]]
([TIME[2015-09-14 23:23:19 +09:00]] 版)
<http://www.gnu.org/software/wget/manual/wget.html>
]FIGCAPTION]

> Some proxy servers require authorization to enable you to use them. The authorization consists of username and password, which must be sent by Wget. As with HTTP authorization, several authentication schemes exist. For proxy authorization only the Basic authentication scheme is currently implemented.
> You may specify your username and password either through the proxy URL or through the command-line options. Assuming that the company’s proxy is located at ‘proxy.company.com’ at port 8001, a proxy URL location containing authorization data might look like this:
> http://hniksic:mypassword@proxy.company.com:8001/

]FIG]


[28] [CITE@en[Fix #44: replace "relative flag" with non-null host check · whatwg/xhr@fabeb1a]]
([TIME[2016-01-21 12:13:22 +09:00]] 版)
<https://github.com/whatwg/xhr/commit/fabeb1a5de040041e213ccd68c63a0d694c2879b>

[FIG(quote)[
[FIGCAPTION[
[29] [CITE@ja-jp[Internet Explorer では Web サイト アドレス (HTTP URL および HTTPS URL) に含まれるユーザー名およびパスワードがサポートされない]]
([TIME[2016-03-01 10:03:21 +09:00]] 版)
<https://support.microsoft.com/ja-jp/kb/834489>
]FIGCAPTION]

> Internet Explorer 3.0 ~ 6.0 では HTTP URL および HTTPS URL で次の構文がサポートされています。
> http(s)://username:password@server/resource.ext
> この URL 構文を使用すると、基本認証方式をサポートする Web サイトにユーザー情報が自動的に送信されます。
> この資料の「背景情報」に記載されている問題を抑制するため、Internet Explorer およびエクスプローラーでは、この形式の HTTP URL および HTTPS URL の処理をサポートしないようになりました。エクスプローラーおよび Internet Explorer では、ユーザー情報を含む URL を使用して HTTP サイトまたは HTTPS サイトを開くことはできません。ユーザー情報が HTTP URL または HTTPS URL に含まれている場合、既定で次のタイトルの Web ページが表示されます。
> 無効な構文エラー
> 注: この既定の動作の変更は、他のプロトコルには影響を与えません。たとえば、セキュリティ更新プログラム 832894 をインストールした後でも、FTP URL にはユーザー情報を含めることができます。
> この既定の動作の変更は、セキュリティ更新プログラム 832894 のリリース以降にリリースされたセキュリティ更新プログラム、Service Pack、および Internet Explorer の各バージョンでも実装されています。

]FIG]

[FIG(quote)[
[FIGCAPTION[
[32] [CITE@en[Connection String URI Format — MongoDB Manual 3.2]]
([TIME[2016-10-28 23:53:37 +09:00]])
<https://docs.mongodb.com/manual/reference/connection-string/>
]FIGCAPTION]

> The following connects to a replica set with two members, one on db1.example.net and the other on db2.example.net:
> mongodb://db1.example.net,db2.example.com

]FIG]


[107] [CITE@en[No need for null passwords]]
([[annevk]]著, [TIME[2017-01-04 02:31:30 +09:00]])
<https://github.com/whatwg/url/commit/5e0b05e95a81fdd539c7b1bf97e69b3df701384f>

[108] [CITE@en[Editorial: stop referring to a password alone as credentials]]
([[annevk]]著, [TIME[2017-01-04 18:27:54 +09:00]])
<https://github.com/whatwg/url/commit/240e61d45023b6742d35ac18f14560fcc2ab4bfe>

[109] [CITE@en[Align <a>/<area>.password with the URL Standard]]
([[annevk]]著, [TIME[2017-01-05 23:20:12 +09:00]])
<https://github.com/whatwg/html/commit/165aeecfb1818912219afc50dd2dd1c6ec935ae2>

[FIG(quote)[
[FIGCAPTION[
[110] [CITE[Intent to deprecate: Legacy subresource requests. - Google グループ]]
(2014/11/21 [TIME[2017-01-22 13:12:40 +09:00]])
<https://groups.google.com/a/chromium.org/forum/#!topic/net-dev/bAMVnc1Zyvs>
]FIGCAPTION]

> I'd like to block two kinds of subresource requests from webby documents:
> 1. Subresources with an "legacy" scheme (e.g. "ftp://my-awesome-ftp-server.com/yay.tiff")
> 2. Subresources with credentials (e.g. "http://ima_user:hunter2@example.com/yay.tiff").

]FIG]


[111] [CITE@en[A file URL cannot have credentials]]
([[annevk]]著, [TIME[2017-02-16 20:14:28 +09:00]])
<https://github.com/whatwg/url/commit/9b2eb10eb8436adaf6620b1864b25442152f205b>

[112] [CITE@en[Editorial: use specific names for encode sets]]
([[annevk]]著, [TIME[2017-02-14 17:11:45 +09:00]])
<https://github.com/whatwg/url/commit/1d69a774bab856651e0d792e825a976056aeaf59>

[FIG(quote)[
[FIGCAPTION[
[113] [CITE@ja[URL外形監視をおこなう - Mackerel ヘルプ]]
( ([TIME[2017-03-18 12:35:12 +09:00]]))
<https://mackerel.io/ja/docs/entry/external-monitoring>
]FIGCAPTION]

> Basic認証を利用しているURLを監視したい場合は"user:password@監視先URL"としてください

]FIG]


[FIG(quote)[
[FIGCAPTION[
[114] [CITE@ja[Webhookにアラートを通知する - Mackerel ヘルプ]]
( ([TIME[2017-03-18 12:38:37 +09:00]]))
<https://mackerel.io/ja/docs/entry/howto/alerts/webhook>
]FIGCAPTION]

> ベーシック認証を設定しURLに認証情報を含める
> https://user:p4ssw0rd@example.com のような形式

]FIG]


[FIG(quote)[
[FIGCAPTION[
[115] [CITE@ja[BASIC 認証 のかかったサーバへの Web フックを利用したい – Customer Feedback for Backlog]]
( ([TIME[2017-03-18 12:41:14 +09:00]]))
<http://feedback.backlog.jp/forums/140671-backlog-%E3%81%B8%E3%81%AE%E8%A6%81%E6%9C%9B-%E5%95%8F%E9%A1%8C%E3%81%AE%E5%A0%B1%E5%91%8A/suggestions/5486977-basic-%E8%AA%8D%E8%A8%BC-%E3%81%AE%E3%81%8B%E3%81%8B%E3%81%A3%E3%81%9F%E3%82%B5%E3%83%BC%E3%83%90%E3%81%B8%E3%81%AE-web-%E3%83%95%E3%83%83%E3%82%AF%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E3%81%84>
]FIGCAPTION]

> Basic認証のかかったサーバへも、userinfo を URL に含むことによって Web フックを送信できるように対応しました。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[116] [CITE@en-us[Configure webhooks on Azure metric alerts | Microsoft Docs]]
( ([[kamathashwin]]著, [TIME[2017-03-18 07:33:14 +09:00]]))
<https://docs.microsoft.com/en-us/azure/monitoring-and-diagnostics/insights-webhooks-alerts>
]FIGCAPTION]

> Password-based authorization - The webhook URI is saved with a username and password, eg. https://userid:password@mysamplealert/webcallback?someparamater=somevalue&foo=bar

]FIG]


[FIG(quote)[
[FIGCAPTION[
[117] [CITE@en[HTTP basic auth for webhooks · Issue #1925 · couchbase/sync_gateway]]
( ([TIME[2017-03-18 12:46:08 +09:00]]))
<https://github.com/couchbase/sync_gateway/issues/1925>
]FIGCAPTION]

> While it's already possible to include basic auth credentials directly in the webhook URL (e.g. http://username:password@example.com/foobar), the URL and credentials are written to the Sync Gateway log every time a webhook event is issued. This makes it less than ideal because, in general, secrets should not appear in logs.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[118] [CITE@en['''['''JRA-31953''']''' Not being able to create webhooks with basic authentication. - Atlassian JIRA]]
( ([TIME[2017-03-18 12:49:18 +09:00]]))
<https://jira.atlassian.com/browse/JRA-31953>
]FIGCAPTION]

> For Atlassian applications, the REST plugin : https://developer.atlassian.com/display/DOCS/REST+and+os_authType allows you to apend the authentication type to the URL. This can be adapted as a workaround. When I add the os_oauthtype to the URL, it works:
> http://localhost:10520/bamboo52/rest/api/latest/server/pause?os_authtype=basic&os_username=admin&os_password=admin
> Note: While this workaround works, it's not great because applications frequently log URLs (for example, Apache can be configured that way) and this means that the password will be leaked, which is not desirable. 

]FIG]


[FIG(quote)[
[FIGCAPTION[
[119] [CITE@en[Datadog-Webhooks Integration]]
( ([TIME[2017-03-17 03:52:00 +09:00]]))
<http://docs.datadoghq.com/ja/integrations/webhooks/>
]FIGCAPTION]

> webhookの認証を必要とするサービスと連携するには、HTTPのベーシック認証を使い、登録するURLの部分を次のように書き換えて下さい。
> https://my.service.com —> https://username:password@my.service.com

]FIG]


[FIG(quote)[
[FIGCAPTION[
[120] [CITE@en[Event Webhook - SendGrid Documentation | SendGrid]]
( ([[SendGrid]]著, [TIME[2017-03-18 02:16:02 +09:00]]))
<https://sendgrid.com/docs/API_Reference/Webhooks/event.html>
]FIGCAPTION]

> We support basic HTTP authentication in our Event Webhook. Those who wish to implement can provide credentials in the post event url field on the app settings page. Below is an example of the post url with authentication included.
> http(s)://username:password@domain/foo.php

]FIG]


[FIG(quote)[
[FIGCAPTION[
[121] [CITE@en[Webhooks overview | Postmark Developer Documentation]]
( ([[Wildbit, LLC]]著, [TIME[2017-01-19 01:49:38 +09:00]]))
<http://developer.postmarkapp.com/developer-webhooks-overview.html>
]FIGCAPTION]

> You can configure your webhook URL with basic HTTP authentication by adding the user name and password to the URL https://example.com/webhook in the following format and setting the result as the webhook URL:
> https://<username>:<password>@example.com/webhook

]FIG]


[FIG(quote)[
[FIGCAPTION[
[122] [CITE@ja[Webhook | Typetalk | Nulab Developers]]
( ([TIME[2017-03-18 13:36:36 +09:00]]))
<https://developer.nulab-inc.com/ja/docs/typetalk/webhook>
]FIGCAPTION]

> トピック編集ページから、bot (任意) という ID でボットを作成し、Webhook URL を設定してください。Basic 認証もサポートしています。(例: http://user:password@example.com/)

]FIG]


[FIG(quote)[
[FIGCAPTION[
[123] [CITE@en[Session URL :: WinSCP]]
( ([TIME[2017-03-26 04:30:26 +09:00]]))
<https://winscp.net/eng/docs/session_url>
]FIGCAPTION]

> sftp|ftp|ftps|ftpes|http|https|scp :// '''[''' <username> '''[''' : <password> ''']''' '''[''' ; <fingerprint> ''']''' @ ''']''' <host> '''[''' : <port> ''']''' /

]FIG]


[124] [CITE@en[draft-ietf-secsh-scp-sftp-ssh-uri-04 - Uniform Resource Identifier (URI) Scheme for Secure File Transfer Protocol (SFTP) and Secure Shell (SSH)]]
( ([TIME[2017-03-19 17:46:55 +09:00]]))
<https://tools.ietf.org/html/draft-ietf-secsh-scp-sftp-ssh-uri-04>

[126] [CITE@en[Fixed parse_userinfo breaking with complex passwords by Thomspoon · Pull Request #293 · servo/rust-url]]
([TIME[2017-04-24 18:41:59 +09:00]])
<https://github.com/servo/rust-url/pull/293>

[127] [CITE@en[504300 - Disallow requests with basic auth credentials in URL - chromium - Monorail]]
([TIME[2018-02-05 23:32:57 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=504300>

[128] [CITE@en[707761 - Name and Password in XMLHttpRequest.open no longer work - chromium - Monorail]]
([TIME[2018-02-05 23:36:02 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=707761>

[129] [CITE@en[708131 - Removal of username/password support in XHR breaks remote control functionality - chromium - Monorail]]
([TIME[2018-02-05 23:37:14 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=708131>

[130] [CITE@en[XMLHttpRequest: align username/password test with the standard by annevk · Pull Request #10419 · w3c/web-platform-tests]]
([TIME[2018-04-24 16:19:31 +09:00]])
<https://github.com/w3c/web-platform-tests/pull/10419>

[131] [CITE@en[Restructure URL rendering section and add additional guidance]]
([[estark37]]著, [TIME[2019-04-04 23:49:46 +09:00]])
<https://github.com/whatwg/url/commit/8809598ddfd1d935432c8a0cad53f13d70e24bc6>

[132] [CITE[curl - How To Use]]
([TIME[2020-09-21T09:01:13.000Z]], [TIME[2020-10-01T06:09:09.601Z]])
<https://curl.haxx.se/docs/manpage.html#--disallow-username-in-url>

[133] [CITE@en[GNU Wget 1.20 Manual]]
([TIME[2020-10-01T07:13:17.000Z]])
<https://www.gnu.org/software/wget/manual/wget.html#index-URL-syntax>

[FIG(quote)[
[FIGCAPTION[
[134] [CITE@en[Git - 認証情報の保存]]
([TIME[2021-02-01T05:32:11.000Z]])
<https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%84%E3%83%BC%E3%83%AB-%E8%AA%8D%E8%A8%BC%E6%83%85%E5%A0%B1%E3%81%AE%E4%BF%9D%E5%AD%98>
]FIGCAPTION]

> この例での ~/git.store は以下のようになっています。
> https://bob:s3cre7@mygithost
> 中身は認証情報つきの URL がずらずらと続く形になっています。

]FIG]


[135] 
[CITE@en-US[CVE-2024-38428 & CVE-2024-38428 Wget Vulnerability: All you need to know]], [[zoer]], [TIME[2024-11-21T18:08:13.000Z]], [TIME[2024-11-22T04:40:42.963Z]] <https://jfrog.com/blog/cve-2024-38428-wget-vuln-all-you-need-to-know/>
