The same password forks into a salt A plus adjustable-cost derivation and a salt B plus adjustable-cost derivation, producing verifier A and verifier B. Salts separate work and cost slows guessing; weak passwords can still fall.

Password hashes need a slow cost

You do not choose a hash for the database; you choose it for the attacker who reads the database. Dedicated password hashes trade speed for resilience to increase the cost of offline guessing after a leak. Salt separates work; cost slows each guess. Verify with the stored parameters first, and consider a stronger rehash only after successful authentication. Weak passwords and server availability still set limits. Fast is the wrong goal Speed is the enemy here. General-purpose hashes such as SHA-256 are intentionally fast, allowing offline attackers to test guesses efficiently; actual rates depend on algorithm and hardware. Purpose-built password algorithms (bcrypt, scrypt, Argon2id) add a tunable cost factor plus per-user salt, so guesses require deliberate work and independently salted accounts have different stored values even with a shared password. The added per-guess work is the feature; its benefit still depends on the selected parameters and password strength. Choose an algorithm that is memory-hard where feasible, and pick a cost that stays high yet tolerable on the hardware that has to verify every login. ...

June 10, 2027 · 5 min · XB Field Notes
A bound LIKE pattern A_1 branches to both A_1 and Ab1 because underscore matches one character. Local in-memory SQLite fixture.

Query parameters preserve the boundary between values and SQL

A parameterized query sends the database instruction and its values through distinct API arguments. The database interprets the instruction as SQL and uses each parameter where a value belongs. This boundary works in embedded engines such as SQLite as well as client-server databases; it does not depend on a network exchange or on an application explicitly managing named server statements. ...

May 17, 2027 · 5 min · XB Field Notes
Encoded input is limited before decompression and decoded output afterward. Complete valid input alone reaches the application commit point.

Request body limits set a boundary

A request-body limit bounds accepted input, not merely the number written in Content-Length. Enforce it while consuming the body, before committing application effects. Compressed input needs separate limits for encoded and decoded bytes. A 413 response is useful only if the expensive allocation or irreversible write has not already happened. ...

April 18, 2027 · 7 min · XB Field Notes
Intended IPv4 address-matching model: requests to 127.0.0.1 and 127.0.0.2 form the matrix rows; exact 127.0.0.1 and wildcard 0.0.0.0 binds form its columns. The exact bind accepts only the first destination; the wildcard accepts both. This is not reproduced output or evidence of IPv6 readiness.

A bind address selects local destinations; reachability needs the whole path

A server’s bind address selects which local destination addresses its socket can accept. Binding an IPv4 listener to 127.0.0.1 differs from binding it to 0.0.0.0, the wildcard address. Neither setting alone describes the complete access policy. Routing, network namespaces, packet filtering, port publication, proxies, and application authentication determine how a request reaches the listener and what it may do afterward. ...

April 2, 2027 · 6 min · XB Field Notes
Under strict-origin-when-cross-origin in equal-security contexts, a same-origin destination receives origin plus path and query, while a cross-origin destination receives only origin. The fragment is omitted from both.

Referrer-Policy chooses how much source URL to send

The HTTP Referer request header can tell a destination which page initiated a request. Its historical spelling differs from Referrer-Policy, the policy that controls how much source information the browser supplies. Depending on that policy and the destination, the value may include the source path and query, contain only the source origin, or be omitted. Sending the full URL to every external destination is not the modern default. ...

March 24, 2027 · 5 min · XB Field Notes
Client and agent exchange signing requests and signatures; a separate server box denotes an independent authorization decision, without a private-key-export path.

ssh-agent remembers your decrypted keys while you work

An SSH agent provides signing operations for public-key authentication. For ordinary software keys, loading an encrypted private key unlocks material that the agent can then use without asking for the file passphrase on every connection. Clients receive public identities and signatures, not an exported private key through the normal agent protocol. Hardware-backed identities are different: the authenticator can retain the private key and require touch or verification. ...

February 27, 2027 · 5 min · XB Field Notes
Two arrows carry the same Authorization value from client to server, with 200 shown twice. Base64 is reversible, and acceptance depends on server policy.

Basic auth carries a reusable credential

HTTP Basic authentication places an encoded username and password in an Authorization header. The encoding is reversible, so possession of that header can be equivalent to possession of the credential. Basic defines a challenge-response exchange, but it does not cryptographically bind a response to a fresh server nonce. A captured accepted value can be replayed while the server continues to accept that account and credential. ...

February 11, 2027 · 5 min · XB Field Notes
A simple GET with credentials: include reaches the server, but a 200 response with wildcard allow-origin cannot be read by the script.

CORS preflight depends on the request shape

CORS preflight asks whether a browser may send a particular cross-origin request shape. It is an OPTIONS request containing the proposed method and relevant request-header names. The browser checks the server’s response before sending the actual request. This mechanism is distinct from checking whether application JavaScript may read an actual response that has already arrived. Both stages can fail, but their effects on server-side execution differ. ...

January 22, 2027 · 6 min · XB Field Notes