Hlavní navigace

Jak na tomhle webu změním heslo? Pomocí známé URL pro změnu hesla

Petr Krčmář

Jednou z běžných uživatelských činností na webu je změna hesla. Na každé stránce se to ale dělá jinak a hlavně na jiné adrese, neexistuje standardní způsob. Řešení je prosté: zavést standardní URL pro změnu hesla.

Doba čtení: 2 minuty

Některá řešení bývají překvapivě prostá a efektivní. Vezměme si třeba problém změny hesla ve správci hesel. Pokud ve svém správci vygenerujete nové (samozřejmě silnější) heslo a vyzvete ho k otevření daného webu, na kterém si budete přát změnu provést, správce vám může v prohlížeči otevřít titulní stranu. Nemůže vás poslat na konkrétní adresu s formulářem, protože ta je na každém webu jinde a on nemá další podrobnosti jak zjistit.

Řešením je dobře známá adresa pro změnu hesla. Že je dobře známá tu značí jednak samotný fakt, ale také to, že leží v cestě začínající na /.well-known/, kterou jste už pravděpodobně viděli – používá ji k ověřování žádostí například certifikační autorita Let's Encrypt nebo ji lze využít ke zveřejnění MTA-STS politiky . Není to ale jediné použití, jak ukazuje seznam rezervovaných adres u IANA.

Známá adresa

Specifikace, jejíž autorkou je Theresa O'Connor z Apple, přichází s jednoduchým řešením: navrhuje adresu /.well-known/change-password, která návštěvníka přesměruje na cílovou adresu s rozhraním pro změnu hesla. Tam už se vrátí běžný HTTP kód OK a uživatel má možnost si heslo změnit.

V praxi tedy správce hesel při požadavku o změnu hesla na konkrétním webu vyzkouší, zda definovaná dobře známá adresa existuje. Pokud server vrátí HTTP kódy 2×x nebo 3×x, pak je uživateli tato stránka otevřena. Protože adresy v této speciální cestě jsou výslovně určeny pro metadata, je zakázáno, aby stránka obsahovala samotný formulář pro změnu hesla. Místo toho musí provést přesměrování pomocí kódu 3×x nebo vrátit HTML stránku s přesměrováním v META hlavičce. Klient (prohlížeč) pak musí být schopen toto přesměrování následovat a otevřít cílovou stránku.

Je to velmi prosté a elegantní řešení, které nezanáší do aplikace výraznou implementační složitost. Sama autorka zmiňuje jako alternativu například uvedení adresy pro změnu hesla v hlavičce webu, což by ovšem znamenalo, že je potřeba obsah webu parsovat, pamatovat si stav na daném webu, pravidelně informaci kontrolovat a podobně. Přesměrování je proti tomu plně v rukou autora webu a pro správce hesel neznamená žádnou zátěž navíc.

Podpora u Apple

Nepřekvapí, že podpora je už zavedena právě u Apple, funkcionalitu umí využít iCloud Keychain v iOS 12 a také Safari 12. Na straně služby se například správného přesměrování dočkáte na webu iCloud.com. Rozšíření dále závisí na programátorech správců hesel a poté na tvůrcích webů. Zavedení je ovšem na obou stranách velmi snadné, což by mohlo pomoci.

Root už tuhle vlastnost podporuje, můžete vyzkoušet navštívit:
https://www.root.cz/.well-known/change-password

Nápad je to zajímavý a určitě by bylo možné podobným způsobem podchytit i další běžné stránky nacházející se na většině webů. V diskusi na Hacker News se zmiňují například:

  • /.well-known/register
  • /.well-known/login
  • /.well-known/logout
  • /.well-known/request-user-data
  • /.well-known/delete-account

Stáli byste o něco podobného?

Našli jste v článku chybu?