the blog

What AI leaves open.

Plain-English writing on the security holes AI coding tools leave behind, and how to close them.

June 2, 2026 · 4 min read

The Contact Form Was Fine. The Personal Inbox It Emailed Everything To Wasn't.

A simple website contact form, built in minutes with an AI website builder, quietly forwarding every submission to a personal email account that had been compromised months earlier and nobody had noticed.

Read it

June 1, 2026 · 4 min read

Deleting the Name Column Doesn't Mean the Data Is Actually Anonymous

Real anonymization is a much harder, more deliberate process than stripping out a name field. A dataset can still identify individual people through the rest of what it contains.

Read it

May 31, 2026 · 4 min read

Your Health-Check Endpoint Is Probably Public. Check What It Actually Says.

A simple /health or /status route feels harmless by design. Depending on what it prints, it can also be handing over your framework version, your dependency list, or your database connection status for free.

Read it

May 30, 2026 · 4 min read

Is Your Analytics Tool Quietly Collecting Personal Data You Never Meant to Send It?

Adding an analytics or tracking tool is usually a single script tag. What actually gets sent to it, sometimes including things like names and emails typed into a form, is a separate question worth checking.

Read it

May 29, 2026 · 5 min read

What Lets a "One-Time Use" Code Get Redeemed Twice at the Exact Same Moment

A gift card, a promo code, a referral bonus, all checked correctly, one at a time. Fire two redemption requests at the exact same instant, and "checked correctly" doesn't always mean what you think it does.

Read it

May 28, 2026 · 4 min read

Outsourcing Security Entirely vs Building Even a Small In-House Habit

Handing the whole question to an outside reviewer feels efficient. It also means every gap that shows up between engagements has nobody actually watching for it.

Read it

May 27, 2026 · 4 min read

Two Things Happened Today. One's Genuinely Useful. One's a Stat I've Told You Not to Trust.

Anthropic shipped a free security-review plugin for Claude Code today. Separately, the same '62% of AI code has vulnerabilities' figure I flagged as unconfirmed months ago showed up again, in a new post, still without a real source.

Read it

May 26, 2026 · 4 min read

A Few Questions People Have Actually Asked Me Lately, Answered Quickly

Not every question deserves its own full post. A handful of shorter ones worth answering directly, in one place, instead of waiting for each to earn a dedicated day.

Read it

May 25, 2026 · 4 min read

You Added a Rate Limit. Have You Actually Confirmed It Triggers?

A rate limit that's configured but never tested is a common way to feel protected without actually being protected. Here's how to verify it in a few minutes, not just assume it from the config.

Read it

May 24, 2026 · 4 min read

Devin Is Built to Work Independently. That's the Whole Pitch, and the Whole Question.

Cognition's AI software engineer is designed to take a task and run with it, with less back-and-forth than most coding assistants. The more independently an agent operates, the more the authority question matters.

Read it

May 23, 2026 · 4 min read

The Sample Data File I Committed for a Demo Wasn't Actually Sample Data

I needed a realistic CSV to show off an import feature. I grabbed the fastest one available. It took me an embarrassingly long time to notice what that actually meant.

Read it

May 22, 2026 · 4 min read

Using Stripe Doesn't Automatically Make Your Checkout PCI Compliant

A payment processor handles a huge share of the compliance burden for you. It doesn't cover how you build the page around it, and that gap is where a surprising number of small stores actually get it wrong.

Read it

May 21, 2026 · 4 min read

The AI Said the Vulnerability Is Fixed. Did You Actually Check?

A confident, well-written explanation of a fix is not the same thing as the fix actually closing the hole. Here's the two-minute habit that tells the difference.

Read it

May 20, 2026 · 5 min read

GraphQL Makes It Easy to Ask for Exactly What You Want. That Includes Data You Weren't Meant To.

A flexible query language is genuinely convenient to build with. It also comes with a specific set of security questions that a traditional REST API simply doesn't raise in the same way.

Read it

May 19, 2026 · 4 min read

What an "Open Redirect" Actually Lets Someone Do With Your Own Trusted Domain

A small convenience feature, redirect the visitor back to wherever they came from, can turn your own trusted, legitimate domain into a link that lands on someone else's phishing page instead.

Read it

May 18, 2026 · 4 min read

Encrypting Every Field by Default vs Actually Deciding What Needs It

Encrypting everything sounds like the safe, lazy default. It usually isn't lazy at all, and it can quietly break the features that make your app useful in the first place.

Read it

May 17, 2026 · 4 min read

"Least Privilege" Sounds Technical. The Actual Idea Is One Sentence.

It's one of the most-cited principles in security writing, usually explained in a way that makes it sound more complicated than it is. Here's the plain version, and how to actually apply it without a security background.

Read it

May 16, 2026 · 4 min read

The Checklist Hasn't Changed Since January. What I've Actually Watched Change Is Who Runs It Without Being Told To.

Every specific check on this blog was true in the first week of the year. The only real progress worth measuring at this point isn't a new item on the list, it's how automatic the old items have become.

Read it

May 15, 2026 · 4 min read

Changing Your Password Should Log Out Every Other Device. Does Yours?

If someone's account gets compromised and they respond the obvious way, changing their password, that response only actually works if it kicks out whoever was already logged in elsewhere.

Read it

May 14, 2026 · 4 min read

Your Hosting Platform Might Already Be Catching Some of Your Leaked Keys. Here's How to Know What It Actually Covers.

Platforms like Vercel have quietly added their own secret-scanning layer on deployment. It's a real, useful backstop, and it's worth understanding exactly what it does and doesn't cover before relying on it.

Read it
← NewerPage 4 of 11Older →
Blog · Harbova