byte-creoSee the performance and security service

Sample report · a made-up company

Performance and security check-and-fix sample report: a made-up online course company

Please read first. This is a made-up report. The company, the service and every number in it are invented, and it is not the result of a real check. But we picked each problem in it from real incidents that made the news this year. Those real incidents are listed with sources at the bottom, under What actually happened this year.

Written 2026-10-26 · bytecreo

The company (made up)

A team of six runs an online course site with a monthly subscription. It has 12,400 members, and 2,100 of them pay every month. They built it in two months with an AI coding tool, without a developer, and launched this spring.

Member data lives in an outside database service (Supabase), payments go through a card payment provider, and an "AI study helper" that answers members' questions runs on an outside AI company, billed by usage. They asked for a check because data leaks kept making the news and nobody had ever looked at their service.

One-page summary

As it stood, anyone could read the details of all 12,400 members, and a stolen key could run up thousands of dollars in AI charges within days. We fixed the three most urgent problems, checked again, and both were closed. The first screen on phones also went from 8.4 seconds to 2.3 seconds.

RiskWhat was wrongIf left aloneAfter the fix
Red1. Member data open to anyone
Without logging in, anyone could read and change the names, emails, phone numbers, courses and payment history of all 12,400 members
Someone could copy or alter the whole member listGreen Outside requests are refused
Red2. The admin master key inside the website files
The files every visitor downloads contained the admin key
That key can read and delete every recordGreen Key replaced and kept only on the company's server
Red3. Change a number, see someone else's receipt
Changing the number at the end of a receipt link showed another member's name, address and amount paid
Members can see each other's detailsGreen Only your own receipt opens
Red4. The AI key exposed, with no limit
The AI study helper's key was also in the website files, with no usage limit or alert
If someone takes it, a bill of about $230 a month can turn into tens of thousands of dollars in daysGreen Limits and alerts set, key kept on the company's side
Yellow5. The admin screen
Anyone who knew the address got the login screen, and wrong passwords were never blocked
Someone can try passwords leaked from other sites until one worksGreen Locked for 15 minutes after 5 wrong tries, plus a phone check
Yellow6. A fake "payment complete" works
The site never checked whether the payment provider's notice was genuine
Paid courses can be opened without payingGreen Fake notices are refused
Yellow7. Slow on phones
On a slow connection, 8.4 seconds before the first screen appeared, and 6.2 MB downloaded up front
Visitors stare at a white screen and leaveGreen 2.3 seconds, 0.9 MB
Yellow8. The database service's October 30 change
From that day, new tables cannot be read by the site unless they are opened up on purpose
A new feature added with an AI tool quietly stops workingGreen Opening new tables is now part of the build steps, tested in advance

Change 8 does not make anything riskier. It just breaks features if you don't know about it. It also does not close problems like number 1 that are already open.

The three to fix first, and why

  1. Lock the member data and remove the master key (1 and 2). This is the road by which every member's data can leak today. This year, the same thing turned up in more than 16,000 services built on the same database service. In Korea, where this company operates, the revised privacy law that took effect on September 11 allows fines of up to 10% of revenue for serious leaks (reported).
  2. Close other members' receipts (3). Any logged-in member can do it, so it is the easiest one to go wrong. In Korea's 2025 leak reports, 12% of hacking cases were web gaps like this one, where changing a value in a link shows someone else's data (reported).
  3. Stop runaway AI charges (4). This one costs money straight away. This year a three-person company was billed $82,314 in two days through a single stolen AI key (reported).

We fixed the remaining 5 to 8 later the same week.

How each one was fixed

ProblemWhy it happenedHow we fixed itTime taken
1. Member dataEach feature added with the AI tool created new tables, but the "see only your own" lock was only on the first two. The five later tables had no lock at allPut "own records only" and "admin only" locks on all seven tables, and moved admin features to the company's server1.5 days
2. Master keyTo build the admin screen quickly, the website used the admin key directlyIssued a new key and retired the old one. The new key lives only on the company's serverHalf a day
3. Other members' receiptsReceipts were looked up by number alone, with no check that the number belonged to the logged-in memberCheck the owner every time a receipt opens, and use numbers that are hard to guess instead of counting up1 day
4. AI chargesThe website called the AI company directly, with no usage limitRoute calls through the company's server, with 50 a day per member, a monthly cap and an alert at 80% of the cap. Key replaced too1 day
5. Admin screenLeft as it was first builtLock for 15 minutes after 5 wrong tries. Admins confirm on their phone after the passwordHalf a day
6. Payment noticesThe part that checks the notice's signature was emptyCheck the signature, then ask the payment provider for the payment status before opening the courseHalf a day
7. Phone speedThe first screen pre-loaded part of an intro video (about 3 MB) and used 12 photos at full sizeLoad the video only when tapped, shrink photos to phone size, load what the first screen needs first2 days
8. October 30 changeIt was a change on the service's side, and nobody saw the noticeMake "open the new table" part of every build step, and switch the new setting on early to testHalf a day

Checked again after the fixes

ItemBeforeAfterHow we checked
Member data readable without loginAll 12,400 members0Requested each of the seven tables from outside. All refused
Secret keys in the website files20Searched all website files again. The old keys are refused
Other members' receiptsOpenRefusedTwo test members tried each other's numbers
AI usageNo limit50 a day per member · monthly cap · alert at 80%Checked that request 51 is blocked and the alert email arrives
Guessing admin passwordsUnlimited triesLocked 15 minutes after 5 wrong tries · phone checkEntered a wrong password six times
Fake payment noticePaid course openedRefusedSent an unsigned notice and an altered one
First screen on phones8.4 seconds2.3 secondsSimulated a slow phone connection, measured three times, took the middle value
Download for the first screen6.2 MB0.9 MBSame method
New features after October 30Could stop workingWorkingSwitched the new setting on early and created a new table

After the fixes we went through sign-up, paying for a course, watching it, asking the AI study helper and logging in as admin in a real browser. Everything worked.

Still open (for the company to decide)

  1. Backups sit in the same place as the live database. This year an AI coding tool deleted live data and backups together. Where to keep backups separately, and the cost, is the company's call.
  2. The AI coding tool still has access to the live database. We recommend letting it work only on a development copy.
  3. The actual wording of the privacy policy, and when to delete the data of members who leave.
  4. For members who reuse passwords from other sites, offer login with a phone check as an option.

What actually happened this year

These are the real incidents we used to pick the problems above. The numbers match the problems in the table. Items marked "reported" were checked through news coverage only.

How a real check works

Want us to check your service the same way, fix it, and check it again?
Book a first 30-minute call