Why Calling Everyone a “User” Is a Hidden Security Risk

The article explains how the vague term “user” creates design flaws and security vulnerabilities across domains such as airline booking systems, Unix environments, and SaaS platforms, and argues for precise terminology to avoid costly rework and confused‑deputy attacks.

Code Ape Tech Column
Code Ape Tech Column
Code Ape Tech Column
Why Calling Everyone a “User” Is a Hidden Security Risk

When a project’s initial lightweight assumptions turn out to be completely wrong after months of work, the root cause is often an imprecise model—most notably the overuse of the word “user.” The article shows why “user” is rarely a good description and how it introduces fundamental security flaws.

You Don’t Have "Users"

At the start, no software system truly has a generic “user.” Business logic is usually more complex, involving distinct concepts such as passengers, agents, and purchasers. In an airline reservation system, requirements include:

Passengers view reservations using a booking code.

Purchasers modify reservations with the last four digits of a credit‑card number.

Travel agencies can view and edit their bookings.

Airline check‑in staff access reservations based on role and airline, requiring passenger identity verification.

These roles illustrate that “user” is an unhelpful abstraction; the system must handle specific entities and their credentials.

Unix Has No "Users"

Even in POSIX systems, the term “user” groups together disparate entities: interactive logins, system services (e.g., nginx running as the httpd user), shared admin accounts on cloud VMs, and the root account. Treating all of these as “users” obscures their differences and creates security gaps, such as the inability to restrict access to only Alice and Bob.

SaaS Providers Have No "Users"

In SaaS, a paying individual belongs to an organization, and one or more people actually use the service. If you model them all as a single “user,” you lose the ability to represent teams, shared billing, and multi‑person usage, forcing costly redesigns later. The useful abstraction collapses to two concepts: a team (for relationships and payment) and members (the actual service consumers).

"Users" Are a Security Problem

The ambiguity of “user” merges two distinct ideas: a person and their representation in software. This conflation can lead to attacks like the Confused Deputy problem, where a browser running under a system account can upload files on behalf of the human user, making the system appear to act on the user’s intent when it does not.

Why It Happens

Because the browser runs with the same system identity as the human, any operation performed by the browser is attributed to the user, even malicious actions. Using a single “user” concept makes such privilege‑confusion attacks more likely.

The Value of Early Design

Spending a few hours upfront to define precise terminology and concepts saves far more effort later. Starting to code immediately with vague terms like “user” seems productive but actually leads to extensive rework and security issues. Future developers will thank you for the early investment.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

access controlSecuritysoftware designuser modelingTerminology
Code Ape Tech Column
Written by

Code Ape Tech Column

Former Ant Group P8 engineer, pure technologist, sharing full‑stack Java, job interview and career advice through a column. Site: java-family.cn

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.