{"licence":{"name":"CC BY-SA 4.0","spdx":"CC-BY-SA-4.0","url":"https://creativecommons.org/licenses/by-sa/4.0/","attribution":"Atlas, a bilingual technical dictionary (https://cmaintz.github.io/tech-atlas/)"},"id":"cs/url","url":{"en":"https://cmaintz.github.io/tech-atlas/en/terms/cs/url/","da":"https://cmaintz.github.io/tech-atlas/da/terms/cs/url/"},"term":{"en":"URL","da":"URL"},"aka":{"en":["Uniform Resource Locator","web address"],"da":["webadresse"]},"domain":["cs"],"cluster":"web","layer":"application","status":"current","era":1994,"summary":{"en":"A written address that says where something lives on the internet and how to reach it, such as a web page or a file.","da":"En skrevet adresse, der fortæller, hvor noget ligger på internettet, og hvordan man når frem til det, fx en webside eller en fil."},"body":{"formal":{"en":"A text string with fixed parts in a fixed order - the protocol to use, such as https, then the host name, an optional port, a path, an optional query and an optional fragment - that together point to one thing on a network.","da":"En tekststreng med faste dele i fast rækkefølge - protokollen, fx https, derefter værtsnavnet, en valgfri port, en sti, en valgfri forespørgsel og en valgfri henvisning til et sted på siden - som tilsammen peger på én ting på et netværk."},"plain":{"en":"Like a postal address with a delivery note - the town and street get you to the building, and the rest says which flat and which letter box.","da":"Som en postadresse med en leveringsbesked - by og gade fører dig til bygningen, og resten siger, hvilken lejlighed og hvilken postkasse."},"inPractice":{"en":"A clerk at an accounting firm holds the mouse over a link in a mail that claims to come from the tax authority, sees that the host name belongs to an unknown site, and reports the mail instead of clicking.","da":"En medarbejder i et revisionsfirma holder musen over et link i en mail, der påstår at komme fra Skattestyrelsen, ser, at værtsnavnet tilhører et ukendt site, og anmelder mailen i stedet for at klikke."},"whyItMatters":{"en":"Every link, saved page and API call depends on it, and attackers copy it closely with look-alike names, so reading it carefully is a basic safety skill.","da":"Hvert link, bogmærke og API-kald afhænger af den, og angribere efterligner den tæt med navne, der ligner, så det er en grundlæggende sikkerhedsvane at læse den omhyggeligt."}},"deepDive":{"en":"Two specifications govern URLs. RFC 3986 (January 2005, STD 66) defines generic URI syntax as scheme \":\" hier-part, optionally followed by \"?\" query and \"#\" fragment, with the authority component written as optional userinfo \"@\", then host, then optional \":\" port (§3.2). The WHATWG URL Standard is a living specification of what browsers actually do, including error-tolerant parsing of backslashes, stripped tabs and newlines, and unusual IPv4 notations such as 2130706433 or 0x7f.1 for 127.0.0.1. The first URL RFC was RFC 1738 (1994), following Tim Berners-Lee's work on the Web. In RFC 3986 terms a URL is a URI that also provides a means of locating the resource, but §1.1.3 notes that the URL/URN distinction is of little practical use.\n\nCharacters outside the unreserved set are percent-encoded as UTF-8 octets (§2.1), and the reserved gen-delims and sub-delims have structural meaning. Normalisation (§6) lowercases scheme and host and removes dot segments (§5.2.4), and relative references are resolved against a base URI by the algorithm in §5. The fragment is never sent to the server. The key=value&key=value convention of the query, including + for space, comes from HTML form encoding, not from RFC 3986. Internationalised domain names are converted to ASCII punycode labels with the xn-- prefix (RFC 3492) under IDNA2008 or UTS #46, and browsers show the Unicode form only when it passes confusable-character checks.\n\nMost phishing tricks exploit the reader's parsing rather than the computer's. In https://login.bank.dk@evil.example/ everything before @ is userinfo and the host is evil.example; in bank.dk.evil.example the registrable domain, read from the right using the Public Suffix List, is evil.example; homographs replace a Latin letter with a look-alike Cyrillic one. On the server side, differences between the library that validates a URL and the one that fetches it enable SSRF and open-redirect bypasses, as Orange Tsai demonstrated at Black Hat 2017; open redirects are catalogued as CWE-601. Tokens or personal data in query strings leak through server logs, browser history and the Referer header, which Referrer-Policy limits. This leakage is one reason OAuth 2.0 security guidance discourages the implicit flow, which returned access tokens in the URL.\n\nSafe handling means parsing with one well-tested library, comparing parsed components (an allowlisted scheme, an exact host) rather than matching substrings or regexes, rejecting javascript: and data: in user-supplied links to prevent XSS, and re-validating after redirects. No specification sets a maximum length; servers impose their own and answer with 414 URI Too Long.","da":"To specifikationer styrer URL'er. RFC 3986 (januar 2005, STD 66) definerer den generiske URI-syntaks som skema \":\" hier-part, eventuelt efterfulgt af \"?\" forespørgsel og \"#\" fragment, hvor authority-delen skrives som valgfri userinfo \"@\", så vært og så valgfri \":\" port (afsnit 3.2). WHATWG's URL Standard er en levende specifikation af, hvad browsere faktisk gør, herunder fejltolerant parsing af backslashes, fjernelse af tabulatorer og linjeskift og usædvanlige IPv4-skrivemåder som 2130706433 eller 0x7f.1 for 127.0.0.1. Den første URL-RFC var RFC 1738 (1994), der byggede på Tim Berners-Lees arbejde med World Wide Web. I RFC 3986's terminologi er en URL en URI, der også angiver, hvordan ressourcen findes, men afsnit 1.1.3 bemærker, at skellet mellem URL og URN har ringe praktisk værdi.\n\nTegn uden for den ureserverede mængde procentkodes som UTF-8-bytes (afsnit 2.1), og de reserverede gen-delims og sub-delims har strukturel betydning. Normalisering (afsnit 6) gør skema og vært til små bogstaver og fjerner punktumsegmenter (afsnit 5.2.4), og relative referencer opløses i forhold til en basis-URI efter algoritmen i afsnit 5. Fragmentet sendes aldrig til serveren. Konventionen nøgle=værdi&nøgle=værdi i forespørgselsdelen, herunder + for mellemrum, stammer fra HTML's formularkodning, ikke fra RFC 3986. Internationaliserede domænenavne omsættes til ASCII-punycode-labels med præfikset xn-- (RFC 3492) efter IDNA2008 eller UTS #46, og browsere viser kun Unicode-formen, når den består kontroller for forvekslelige tegn.\n\nDe fleste phishingtricks udnytter læserens parsing snarere end computerens. I https://login.bank.dk@evil.example/ er alt før @ userinfo, og værten er evil.example; i bank.dk.evil.example er det registrerbare domæne, læst fra højre med Public Suffix List, evil.example; homografer udskifter et latinsk bogstav med et kyrillisk, der ligner. På serversiden muliggør forskelle mellem det bibliotek, der validerer en URL, og det, der henter den, omgåelse af SSRF- og open redirect-beskyttelse, som Orange Tsai demonstrerede ved Black Hat 2017; open redirects er katalogiseret som CWE-601. Tokens eller personoplysninger i forespørgselsdelen lækker via serverlogs, browserhistorik og Referer-headeren, som Referrer-Policy begrænser. Den lækage er en af grundene til, at sikkerhedsvejledningen til OAuth 2.0 fraråder implicit flow, der returnerede adgangstokens i URL'en.\n\nSikker håndtering betyder at parse med ét gennemprøvet bibliotek, sammenligne de parsede dele (et godkendt skema, en præcis vært) frem for at matche delstrenge eller regex, afvise javascript: og data: i links fra brugere for at forhindre XSS og validere igen efter omdirigeringer. Ingen specifikation fastsætter en maksimal længde; servere sætter deres egne grænser og svarer med 414 URI Too Long."},"edges":[{"type":"requires","to":"cs/internet","confidence":"high","strength":"normal"},{"type":"used-with","to":"cs/web-browser","why":{"en":"A browser is pointed at a page by typing or clicking its URL.","da":"En browser sendes hen til en side ved at man skriver eller klikker på dens URL."},"confidence":"high","strength":"primary"},{"type":"used-with","to":"cs/web-application","confidence":"high","strength":"normal"}],"depth":5,"sources":[{"title":"RFC 3986 - Uniform Resource Identifier (URI) Generic Syntax","url":"https://www.rfc-editor.org/rfc/rfc3986","tier":"standard","publisher":"IETF"},{"title":"MDN Web Docs - What is a URL?","url":"https://developer.mozilla.org/en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_URL","tier":"official-doc","publisher":"Mozilla"}],"draft":true}