Skip to main content

Project 07

Broken Access Control Fix

Build a two-user app, break its record access, fix it and keep it fixed.
Difficulty
Medium
Time
5 to 8 hours
On a résumé
Solid portfolio piece

Why this one is worth your hours

Shows you can find the most common web flaw and prove your fix with tests.

Two or three sessions. Enough depth to carry an interview answer.

What you walk away with

  • Node.js
  • Express
  • Playwright
  • GitHub Actions

Those names go on your résumé line, and every one of them is something an interviewer can ask you about, so use them honestly.

Give it a name of its own

Broken Access Control Fix” describes the work. It is not the name. Pick one of these, or invent your own, then use it everywhere: the repository, the README title and the résumé.

  • Keyring
  • Owner Check
  • Two Doors
  • Gatehouse
  • Record Guard

The framework you follow

  • OWASP ASVS V4

    Write the access-control requirement in the wording the standard uses.

  • OWASP Top 10 A01

    Name the category and link the cheat sheet in your README.

How to follow a framework, honestly

A framework is a checklist someone argued about for years. You do not read all of it. You use the part that matches your project.

  1. Take one section. Open the framework and find the section that covers your project. Read only that.
  2. Quote the requirement. Put the requirement in your README in its own words, one or two lines, with a link.
  3. Map your steps to it. Beside each step you take, name the item it satisfies. This is what makes the work checkable.
  4. Record where you differ. You will skip something because it needs a budget or a team. Write that down and why. It reads as judgment, not as a gap.

Naming a framework you followed and showing where you diverged is worth more in an interview than listing five you have only heard of.

Do the work

Keep a note file open. One line per step: what you ran, what came back, what you decided.

  1. Build a small app where each user owns private records.
  2. State the requirement in one sentence: a user reads only their own records.
  3. Sign in as user A, note how a record is requested.
  4. Request user A's record as user B and capture the response.
  5. Fix it with a server-side ownership check on every read and write.
  6. Add automated tests that fail if the check disappears.

What ends up in the repository

  • The code, sample data only
  • Before-and-after requests
  • The regression tests and CI run

Put it on GitHub

This is the part people skip, and it is the part a reviewer actually opens. Eight steps, about twenty minutes the first time.

  1. Create the repository

    github.com → New repository

    Name it the project name you picked. Add a README and an MIT licence. Keep it public.

    Note it down Write the chosen name in your notes. It goes on your résumé later, unchanged.

  2. Bring it to your machine

    git clone https://github.com/you/arkham.git
    cd arkham

    The terminal prints Cloning into 'arkham'. You now have a folder with one README in it.

    Note it down If it asks for a password, set up a personal access token or SSH key once and never again.

  3. Make room for evidence

    mkdir evidence notes scripts
    printf 'data/\n*.pcap\n' > .gitignore

    Three empty folders and a .gitignore, so raw captures and downloaded datasets never get committed.

    Note it down Never commit real data, keys or anything with someone's name in it.

  4. Write the README before the work

    open README.md

    Goal, environment, what I did, evidence, findings, limitations. Headings first, blanks underneath.

    Note it down Writing the headings first tells you what to collect while you work, instead of after.

  5. Take notes as you go

    notes/log.md

    One line per action: the time, what you ran, what came back, what you decided.

    Note it down This is where your numbers come from. In three days you will not remember why you ruled something out.

  6. Commit in small pieces

    git add .
    git commit -m "Add triage table for alerts 1 to 6"

    Each commit is a checkpoint with a message you can read back months later.

    Note it down One commit per step of the project. An interviewer can scroll your commits and see how you worked.

  7. Push it up

    git push

    Refresh the page on github.com and your README is the front page of the project.

    Note it down Check it in a private window. If it 404s, the repository is still private.

  8. Finish it properly

    git tag v1.0
    git push --tags

    Screenshots in evidence/, the real numbers filled into the README, a tagged version.

    Note it down Copy the repository link into your résumé line and click it once before you send it.

  • Small commits beat one giant upload; the history is part of the evidence.
  • Every screenshot needs a caption saying what it proves.
  • If something did not work, keep it and say so. Reviewers trust write-ups that admit limits.

The résumé line

Project name | tools, datasets and frameworks | link

Example, with your own name and your own numbers

KeyringNode.js, Express, Playwright, GitHub Actions, OWASP ASVS V4GitHub

Built a two-user demo and tested 6 record endpoints for ownership checks; fixed the 2 that exposed another user's data and added 4 regression tests that fail if the weakness returns.

The numbers come from your notes, not from this page. Count as you work, keep every figure checkable in your report, and hyperlink the last part to the repository.

Next

  • Secure Code Review Pack

    Review a small open-source project and write findings a maintainer could act on.

  • CI Security Gate

    Add dependency, secret and static checks to a pipeline without blocking the team.