From: Junio C Hamano Date: Fri, 06 May 2016 15:52:14 GMT Subject: Re: [PATCH v4 01/11] add fetch-pack --diag-url tests for some corner cases Message-ID: In-Reply-To: <4349487f-716e-dadf-795b-cf790b03e02d@web.de> Torsten Bögershausen writes: > ssh itself does not use a password: > ... > Neither does Git. > ... > The user:password came in here: > Commit 92722efec01f67a54b > clone: do not use port number as dir name > > Actually, looking back, it may have been better to say > git clone ssh://aaaa:bbbb@host:/path > is illegal and simply die() out. RFC2396, which updated RFC1738, discourages the use of :password in "3.2.2 Server-based Naming Authority", for obvious reasons. Some URL schemes use the format "user:password" in the userinfo field. This practice is NOT RECOMMENDED ... and then this is marked as deprecated in RFC3986 "3.2.1. User Information". Use of the format "user:password" in the userinfo field is deprecated. Applications should not render as clear text any data after the first colon (":") character found within a userinfo subcomponent unless the data after the colon is the empty string (indicating no password). However, at the parser level that _knows_ the syntax, you shouldn't be unilaterally turning these "not recommended" and "deprecated" to "forbidden". It should be prepared to see ':' to its input, if only to correctly recognize that as an attempt to express :password, in order to be able to hide the data after the first colon when running in verbose mode for example. I'd recommend that the parser to allow :@, and at least notice ':' that appears before the first '@' as having a depreated form of . After stripping :// from the front, it is OK to assume that everything before the first '@' is (in RFC2396 lingo), and everything in that is before the first ':' is when doing so. >>> ... When you are constrained by the Common Internet >>> Scheme Syntax, i.e. >>> >>> ://:@:/ >>> >>> you cannot have arbitrary characters in these parts; within the user >>> and password field, any ":", "@", or "/" must be encoded.