Blog

Posts tagged “Express”

What small Node teams should log in the AI-attack era. Cover graphic for a guide to logging API requests to spot bot attacks.
Security

What small Node teams should log in the AI-attack era

Bots are now more than half of web traffic, and 27% of attacks target APIs and identity systems. You don't need a security team to see it, just the right fields on every request. Here's the minimum to capture, five patterns to watch, and when to block.

Jason Fill October 27, 2026 8 min read
Node.js large file upload, no OOM. Cover graphic for a guide to streaming large uploads in Node.js without running out of memory.
Coding

Node.js large file upload handling without running out of memory

One 2 GB upload should not take your API down with it. Here is how to stream uploads in Express and Fastify, when to use presigned URLs, and which parsers to patch.

Jason Fill October 5, 2026 6 min read
API key security, from format to rotation. Cover graphic for a guide to generating, hashing, scoping and rotating API keys in Node.js.
Security

API key security for Node APIs: prefixes, hashing, scopes and rotation

A customer just pushed their API key to a public repo. Can you tell if anyone used it, and could a database leak expose every key? Design API key security in Node properly: prefixes, hashing, scopes and rotation.

Jason Fill July 27, 2026 6 min read
Zod validation, before the 500. Cover graphic for a guide to validating request bodies and query strings with Zod in Express and Fastify.
Coding

Zod validation in Express and Fastify: request bodies, query strings and useful errors

A null where your handler expected an array becomes a 500 and a support ticket. Validate bodies, query strings and params with Zod 4 in Express 5 and Fastify 5, return 400s clients can act on, and stop extra fields at the door.

Jason Fill July 17, 2026 6 min read
Spot a CORS misconfiguration in one curl. Cover graphic for a guide to finding, fixing and testing CORS misconfiguration in Express and Fastify.
Security

CORS misconfiguration in Express and Fastify: how to find it and test for it

One line added to silence a frontend error, cors({ origin: true, credentials: true }), lets any website read your users' data. Find CORS misconfiguration in Express and Fastify APIs, fix it, and test it in CI.

Jason Fill June 12, 2026 5 min read
Idempotency keys stop double charges. Cover graphic for a guide to making POST retries safe with idempotency keys in Node.js and Postgres.
Coding

Idempotency keys in Node.js: safe retries for POST endpoints without double charges

A timeout, an automatic retry, and a customer charged twice. Idempotency keys make POST retries safe: here is a working Express and Postgres implementation, the status codes to return, and how long to keep keys.

Jason Fill June 3, 2026 7 min read
Node.js log levels that mean something. Cover graphic for a guide to a log level policy for small Node.js teams.
Logging

Node.js log levels that mean something: a logging policy for small teams

At 3am your error log is full of scanner 404s and the real database timeout is buried. Here is a Node.js log levels policy a small team can paste into its repo, plus the code that enforces it.

Jason Fill April 29, 2026 6 min read
BOLA vulnerability: one digit away. Cover graphic for a guide to fixing BOLA and IDOR in Node APIs and spotting probing in request logs.
Security

BOLA vulnerability in Node APIs: how to fix IDOR and catch it in your logs

Change one digit in a URL and get another customer's invoice. Here is how to fix BOLA and IDOR structurally and spot someone probing for it before they find a gap.

Jason Fill April 13, 2026 6 min read
Express 5 migration: what actually breaks. Cover graphic for a guide to upgrading an Express 4 API to Express 5 and fixing what breaks.
Coding

Express 5 migration: what breaks in your API and how to fix it

You bump Express to 5 and the app dies with "Missing parameter name", or worse, starts fine and quietly breaks pagination. Here is what the Express 5 migration actually breaks in an API and how to fix each one.

Jason Fill March 16, 2026 5 min read
Credential stuffing detection in your logs. Cover graphic for a guide to detecting credential stuffing on Node API login routes.
Security

Credential stuffing detection for Node APIs: spotting it in your login logs

Every request looks like a normal login, which is why stuffing goes unseen until a customer reports a login they did not make. Here is how to see it in your logs.

Jason Fill February 26, 2026 6 min read
Node.js fetch timeout, set properly. Cover graphic for a guide to setting Node.js fetch timeouts with AbortSignal and undici.
Coding

Node.js fetch timeout: deadlines with AbortSignal and undici

One slow vendor and every handler hangs, because Node fetch waits up to five minutes by default. Here is how to set deadlines with AbortSignal and undici in Express and Fastify.

Jason Fill February 9, 2026 6 min read
Node.js rate limiting: three algorithms. Cover graphic for a guide to fixed window, sliding window and token bucket rate limiting in Node.js.
Security

Node.js rate limiting: fixed window vs sliding window vs token bucket

One client's runaway retry loop should not take your API down at 3am. Compare fixed window, sliding window and token bucket rate limiting in Node, with working code, a Redis version and what to ship this afternoon.

Jason Fill February 2, 2026 7 min read