the blog

What AI leaves open.

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

April 23, 2026 · 4 min read

I Turned On 'Auto-Approve Everything' for a Weekend, to Move Faster. That Was the Whole Mistake.

Reviewing every single change an agent proposed felt like it was slowing me down on a deadline. Turning that review off for two days is the part I'd take back if I could.

Read it

April 22, 2026 · 4 min read

Building on a Reputable Platform Doesn't Mean You Inherited Its Security Team

Vercel, AWS, and similar platforms invest heavily in securing their own infrastructure. None of that reaches the access rules, keys, and logic you specifically configured on top of it.

Read it

April 21, 2026 · 4 min read

Does Your Cookie Banner Actually Do Anything, or Just Display Something?

A lot of consent banners look correct and don't actually stop anything from loading before someone clicks accept. That gap defeats the entire purpose of having one.

Read it

April 20, 2026 · 5 min read

Two Separate Lovable Incidents Became Public This Week. They're Not the Same Bug.

One exposed chat history and source code to any authenticated user, fixed in two hours. The other, a permission flaw reported 48 days ago, is still unpatched for older projects as of today. Worth keeping them straight.

Read it

April 19, 2026 · 5 min read

Your Chat Feature's Real-Time Connection Might Not Be Checking Who's on the Other End

A websocket connection stays open for the life of a session, which makes it easy to authenticate once and never check again. That gap is exactly where a live chat or dashboard feature can quietly leak.

Read it

April 18, 2026 · 4 min read

Clearing a Backlog of Security Debt vs Never Letting It Build Up in the First Place

One is a bigger, scarier project you keep postponing. The other is a small habit attached to every feature you already ship. Only one of them actually tends to happen.

Read it

April 17, 2026 · 4 min read

Do You Have to Tell Future Customers About a Security Incident You Already Fixed?

It feels safer to just not bring it up. In practice, how you handle a past incident says more about whether you can be trusted with new data than the incident itself usually does.

Read it

April 16, 2026 · 4 min read

The Apps I'm Seeing Now Look Different Than the Ones From January

Not just more of them. More ambitious ones: real payment flows, real customer data, features that would have felt advanced to attempt solo a year ago. The stakes per app are quietly climbing.

Read it

April 15, 2026 · 4 min read

That 'Are You Sure?' Dialog Might Be the Only Thing Stopping a Dangerous Action

A confirmation popup in the interface feels like a safety check. If the actual permission check lives only in that popup and not on the server behind it, it's decoration, not protection.

Read it

April 14, 2026 · 4 min read

AI Website Builders Have a Smaller Attack Surface Than App Builders, Not a Zero One

Tools that generate a marketing site or a portfolio from a prompt carry a genuinely different, usually smaller, risk than tools that scaffold a full backend. Smaller isn't the same as nothing to check.

Read it

April 13, 2026 · 4 min read

The Demo Environment We Showed to Prospects Was Quietly Running on Real Customer Data

Setting up a sandbox felt like extra work we didn't have time for, so the demo just pointed at production with a few accounts we called 'test.' Nobody planned it that way. It just ended up that way.

Read it

April 12, 2026 · 4 min read

"It's Just a Script Tag" Undersells What a Third-Party Widget Can Actually Do

A chat widget, an analytics snippet, a review embed. Each one you paste into your site runs with almost the same access to the page as your own code, whether or not that feels true.

Read it

April 11, 2026 · 4 min read

Your Cron Job Doesn't Have a Login Screen. It Still Needs the Same Scrutiny.

Background jobs and scheduled tasks run without anyone clicking anything, which is exactly why they often skip the access checks every user-facing feature gets, even though they can touch just as much data.

Read it

April 10, 2026 · 4 min read

What Actually Gets Checked When You Submit to an App Store, and What Doesn't

App review catches a specific, narrow set of problems. It was never designed to catch the access-control mistakes that cause nearly everything else on this blog, and it's worth knowing exactly where that line sits.

Read it

April 9, 2026 · 4 min read

What a Publicly Listable Storage Bucket Actually Hands Someone

Not being able to guess a file's name doesn't matter if someone can just ask your storage to list every file it has. Two different settings, and only checking one of them.

Read it

April 8, 2026 · 4 min read

Should You Build Your Own Login System, or Use One Someone Else Already Built?

Auth feels like a small enough feature to just build yourself. It's also one of the most consequential parts of any app to get subtly wrong, and that combination is worth thinking through before you start typing.

Read it

April 7, 2026 · 4 min read

How Much of a Small Startup's Budget Should Actually Go to Security?

There's no universal percentage that fits every app. There is a reasonable way to think about the question, based on what you're actually holding rather than an arbitrary line item.

Read it

April 6, 2026 · 4 min read

A Year of These Stories In, Here's What I've Actually Noticed About How Founders React

Not panic, and not denial either. Something closer to a quiet, growing habit of asking one extra question before launch, which is exactly the shift that actually moves the needle.

Read it

April 5, 2026 · 4 min read

Is Anything Stopping a Script From Filling Out Your Public Form a Thousand Times?

A contact form, a waitlist signup, a review submission. Anything public-facing that accepts input is a target for automated spam unless something specifically stops it, and most fast-built forms have nothing at all.

Read it

April 4, 2026 · 4 min read

Your No-Code Database Tool Has a Sharing Setting, and It's Probably Looser Than You Think

Airtable, Glide, Notion, and similar tools make it easy to turn a spreadsheet-like database into a real app with a shareable view. That shareability is exactly where the risk lives.

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