opaque

From IndieWeb


β€œOpaque” is a term often used to refer to data such as URIs or other identifiers. An identifier is opaque if it provides no information about the thing it identifies other than being a seemingly random string or number. [1]

The β€œopacity” of an identifier depends on the context in which it is viewed as well as any information about its format given. For example, an identifier with the form XXXX.YYYY might have no immediately apparent meaning, but becomes transparent (and therefore guessable+hackable) if its structure is explained.

Examples

Examples of identifiers which are opaque without extra information:

  • AD5684C2-5F3A-11E2-B949-9F1B79957A39
  • 145734

Examples of identifiers which are reasonably guessable, either because of their natural language or adherence to well-known standards:

  • venue/parliament
  • 2012-05-23T10:45:00

Uses

  • For ephemeral stuff, opaque IDs are likely ok, e.g. authentication tokens etc.

Opinions

IndieWeb community opinions about opaque IDs:

  • Tantek[2]:

    I find opaque IDs to be an anathema and a weakpoint architecturally and in terms of data integrity/longevity. Opaque IDs also smell of "database think" - which is typically a bad mindset for designing anything that's expected to last. So opaque ID[s] [are] dumb, so just use an algorithmic ID instead. Opaque = fragile.

Criticisms

Fragility

URLs based on opaque ids (and links to them) die all the time. URL shorteners, news media sites that go down with their article IDs etc. When you lose your database of opaque ids - forget it, those links are dead. E.g. you upgrade your CMS, wipe previous database/tables etc. - oops, IDs gone. Happens all the time with media/content sites - they redesign, previous opaque article IDs are all lost, URLs break.

see also