All posts

February 9, 2026 · 4 min read

The Extra Checks That Matter Once Your App Holds Real Personal Data

Every app deserves the basics: headers, keys kept out of the browser, database rules actually turned on, login checks that hold up under a real test. But a todo list app for a handful of friends and a system holding names, emails, home addresses, health details, or financial information don't carry the same stakes, even when the underlying code looks nearly identical. Here's what earns extra attention the moment real personal data enters the picture.

Know exactly what you're storing, in writing

This sounds almost too simple to matter, and it's the step people skip most. Write down, plainly, every category of personal information your app touches: names, emails, phone numbers, physical addresses, dates of birth, payment details, health information, anything about children. You can't protect what you haven't actually inventoried, and most builders discover mid-list that their app quietly collects more than they'd assumed.

Encrypt sensitive fields at rest, not just in transit

HTTPS protects data moving between a browser and your server. It says nothing about data sitting in your database. For fields like government ID numbers, payment details, or health information, look at whether your database or your framework supports encrypting those specific fields at rest, so that even someone who gains direct database access doesn't get plain, readable values for the most sensitive columns.

Log access to sensitive records, not just errors

Most small apps log crashes and errors and nothing else. Once real personal data is involved, it's worth also logging who accessed which sensitive record and when, at least for your most sensitive tables. If something does go wrong later, the difference between having that trail and not having it is the difference between knowing exactly what was touched and guessing.

Build an actual deletion path

If someone asks you to delete their data, can your app actually do that, completely, including backups and any downstream copies, or does 'delete my account' just hide a row while the real data sits untouched in five other places? This isn't only a compliance question in places with data-protection law. It's a basic promise: if you're going to hold someone's information, you should be able to actually let it go when asked.

Reduce who has standing access, on purpose

It's easy for every team member, contractor, or AI agent working on a project to end up with full database access, because it's the path of least friction while building. Once real personal data is involved, go back and ask who actually needs to see the sensitive tables day to day, versus who just happened to get access while the project was small. Scale access down to match the real need, not the historical default.

Assume this data is exactly what a scanner is looking for

Automated scans, breach databases, and researchers scanning the open internet are all disproportionately interested in exactly this category of data, because it's the category that actually causes harm when it leaks and actually carries a price on the wrong markets. An app with sensitive personal data behind a missing access rule isn't a slightly worse version of an open todo list. It's a meaningfully different kind of exposure, and it deserves a meaningfully more careful pass before it goes live.

None of this replaces the basic checklist. It sits on top of it. The moment real personal information enters your database, the cost of getting the basics wrong stops being hypothetical, and the extra hour these checks take is small next to what they're actually protecting.

Related reading

Harbova is a security service for apps built with AI tools. Start with a free scan, and if it finds something serious, we can fix it and prove it is closed.