From: Tanaka Akira Date: 2005-12-12T11:32:48+09:00 Subject: Re: About open-uri and ENV["HTTP_PROXY"] In article <3665a1a00512111049n6fe237a1i7cefbceb25bf07cf@mail.gmail.com>, Anatol Pomozov writes: > I am investigating problem with Gems and proxy authorization and I have > question about open-uri code. > To be precise code from OpenURI.open_loop(uri, options) (Current version > from CVS) > > when :proxy > opt_proxy = options.fetch(:proxy) > proxy_user = nil > proxy_pass = nil > > proxy option mostly come from ENV and could contain information for basic > authorization: username and password. Something like this > http://anatol:pwd@www.proxy.com:8080/ > and right way is parse this string and put proxy_user to anatol, proxy_pass > to pwd and proxy_url to http://www.proxy.com:8080/ Environment variables are not appropriate place to store passwords since they are visible from other users. Note that RFC 3986 deprecates "user:password" in the userinfo field. | 3.2.1. User Information | | The userinfo subcomponent may consist of a user name and, optionally, | scheme-specific information about how to gain authorization to access | the resource. The user information, if present, is followed by a | commercial at-sign ("@") that delimits it from the host. | | userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) | | 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). Applications may choose to ignore or | reject such data when it is received as part of a reference and | should reject the storage of such data in unencrypted form. The | passing of authentication information in clear text has proven to be | a security risk in almost every case where it has been used. | | Applications that render a URI for the sake of user feedback, such as | in graphical hypertext browsing, should render userinfo in a way that | is distinguished from the rest of a URI, when feasible. Such | rendering will assist the user in cases where the userinfo has been | misleadingly crafted to look like a trusted domain name | (Section 7.6). -- Tanaka Akira