Tip: Jan Bien: kódování www stránek (HTML, XHTML, CSS)


Standardní nestandardnost IE

Microsoft připravuje update IE (Microsoft.com, 27. ledna 2004), po jehož instalaci bude znemožněno předávat uživatelské informace (jméno a heslo) protokolů HTTP a HTTPS přímo v URL adrese. Podporou adresy typu http(s)://username:password@server/resource.ext nyní oplývají všechny verze Internet Exploreru a Windows Exploreru. Microsoft svůj update podporuje argumentem, že tato vlastnost bývá zneužívána k podvrhování odkazů. Mě osobně by tedy spíše zajímalo, proč Microsoft vůbec něco takového implementoval, když RFC 1738 (Uniform Resource Locators (URL)) vůbec předávání těchto informací na protokolu HTTP nepřipouští a RFC 2396 (Uniform Resource Identifiers (URI): Generic Syntax) to vysloveně nedoporučuje na protokolu kterémkoli. (Tip: Adam Hauner)

Za účelem pousmání-se stojí za pozornost článek 833786 (celý název svou délkou naprosto nevhodný pro nadpis i text odkazu zní: Postupy, které vám mohou pomoci identifikovat podvodné weby (s falešnou identitou) a hypertextové odkazy se zlými úmysly a chránit vás před nimi :-)) Ale cituji z článku:

Nejúčinnější ochranou před hypertextovými odkazy se zlými úmysly je neklepat na ně. Místo toho zadejte adresu URL zamýšleného cíle do pole adresy sami. Jestliže do pole adresy zadáte adresu URL ručně, můžete ověřit informace, pomocí kterých aplikace Internet Explorer získává přístup k cílovému webu. Chcete-li takto postupovat, zadejte do pole Adresa adresu URL a stiskněte klávesu ENTER.

Uznávám, ba co více, podporuji osvětu uživatelů před různými záškodníky/podvodníky. Obávám se však, že na základě doporučení takovýchto článků uživatelé buďto na používání internetu zanevřou, nebo (a to spíše) se přestanou o bezpečnost zajímat, protože by je v práci neskutečně zdržovala.

Související:

Komentáře

1. Martin Kopta – 1. února 2004, 20:24

Problém je v tom, že MSIE má další chybu. Když napíšete odkaz, který před @ obsahuje ještě znak na pozici \01 v ASCII, podaří se vám dosáhnout toho, ž e v Location baru bude vidět jen část adresy před \01, ale stránka se stáhne z adresy za \01. (http://www.zapthedingbat.com/security/…)

2. Richard H. – 2. února 2004, 13:41

Místo aby opravili vlastní chybu, radši zruší používanou feature. Úžasné.

3. Jan Bien – 2. února 2004, 13:45

To Richard H.: Jelikož specifikace URL protokolu HTTP předávání jména a hesla v adrese nepřipouští, tak to chápu. Být výrobcem, udělal bych to samé.

4. Richard H. – 2. února 2004, 13:50

Mám pocit, že jsem někde narazil na tvrzení, že to naopak v nějakém RFC je.

5. Jan Bien – 2. února 2004, 13:58

To Richard H.: Cituji z RFC 1738:

An HTTP URL takes the form: http://<host>:<port>/<path>?<searchpart> where <host> and <port> are as described in Section 3.1. If :<port> is omitted, the port defaults to 80. No user name or password is allowed.

6. Adam Hauner – 3. února 2004, 07:50

To Jan Bien: RFC 1738 byla aktualizována RFC 2396, takže by mělo být nahlíženo spíše do ní.

RFC 2396 použití jména a hesla nevylučuje, jen nedoporučuje, citace z bodu 3.2.2: Some URL schemes use the format "user:password" in the userinfo field. This practice is NOT RECOMMENDED, because the passing of authentication information in clear text (such as URI) has proven to be a security risk in almost every case where it has been used.

Pro jistotu výtah z RFC 2119: 4. SHOULD NOT - This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.

7. Jan Bien – 3. února 2004, 14:32

To Adam Hauner: Adame, ale jak sám cituješ: Some URL schemes use the format "user:password" …

Tedy některá (ne všechna) URL shémata používají tento formát. V úvodu RFC 2396 je psáno, že upravuje a doplňuje RFC 1738 a že URI pro jednotlivá shémata (myšleno HTTP, FTP, ...) budou v budoucnu součástí samostatného dokumentu, který zřejmě ještě neexistuje (nenašel jsem ho). Takže soudím, že specifikace konkrétních schémat platí ještě z RFC 1738. Nahlédl jsem také do RFC 2616 (HTTP 1.1), kde se připouští jen tento formát URL: http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]].

8. Adam Hauner – 4. února 2004, 08:19

To Jan Bien: Požadavky přes HTTP (1.1) se posílají trochu jinak než jako celé URL. Rozděluješ je na část za hostem, samotného hosta posíláš na dalším řádku a autorizační údaje se posílají kryptované zvlášť a to jen, když je webserver požaduje.

Ostatně si všimni, že v uvedeném formátu chybí část za ohrádkou (#) - serveru se také neposílá, používá ji jen user-agent, přesto je součástí URL.

Souhlasil bych s tvrzením, že podpora user:password v user-agentech je zvyklostní; restrikce v RFC přišly až po implementaci.

9. Jan Bien – 4. února 2004, 09:37

To Adam Hauner: Jasné, takovouto formulací mohu souhlasit. Navíc dík za objasnění toho HTTP - já si myslel, že user:password je předáván jako součást URL až k webserveru. :-)

Váš komentář

K článku nelze připojit komentář, Mraveniště bylo zakonzerováno.


Copyright © Jan Bien.
W3C XHTML 1.0  | W3C CSS 2  | UAW adaptive  | Geo URL  | RDF RSS