Skip to main content

Security Consulting

Web application, infrastructure, and the third-party scripts marketing put on the page.

Overview

How I approach this work

Most sites are reviewed as if the application were the whole attack surface. On a commercial site it rarely is. The application matters, and so does the server underneath it, but so does everything marketing has been given permission to inject — tag containers, pixels, chat widgets, personalisation and testing tools, consent managers — each of which is third-party JavaScript running with full access to the page, the forms, and whatever the customer types into them. That surface is usually governed by whoever had container access last, and it is almost never in scope when the site gets a security review. I look at all three layers together, because the interesting failures tend to live where they meet: a form that is hardened server-side while a marketing tag quietly reads it client-side, or a strict content policy that gets relaxed to make a vendor script work and never gets tightened again.

On the application side the review works through the standard classes of failure against the real codebase rather than a checklist in the abstract: broken access control and object-level authorisation, authentication and session handling, injection and output encoding, cryptographic and secrets handling, security misconfiguration, outdated and vulnerable dependencies, and whether anything is being logged that would let you reconstruct an incident afterwards. Authentication gets particular attention, because it is where the highest-consequence mistakes cluster and where recovery flows — password reset, email change, support-initiated access — quietly undo the protections the login form implements properly. On the infrastructure side: remote access, firewall posture, patching discipline, transport and certificate configuration, secret storage and rotation, and backups, which are only worth what a tested restore proves they are worth. On the marketing side, the container itself is treated as code: what is in it, who can publish to it, what each vendor script can reach, whether customer data is being passed to platforms that were never meant to receive it, and whether the consent configuration matches what actually fires. That last part carries legal exposure as much as technical exposure, and for a Canadian business it lands under privacy and anti-spam law rather than only under a security policy. Findings arrive severity-rated with reproduction steps and a remediation plan, and where the work includes fixing them, the fixes get retested rather than assumed. I run the same review cadence against the systems I operate, which is mostly how I learned that the second audit finds the things the first one taught you to look for.

Deliverables

What a typical engagement produces

Concrete artifacts from this kind of work.

Application security review
The standard classes of failure worked through against the actual codebase — access control, injection and output encoding, insecure design, misconfiguration, and integrity of the build and release path — each finding severity-rated with reproduction steps.
Authentication and session review
Login, session lifecycle, credential storage, multi-factor coverage, and the recovery flows around them — password reset, email change, and support-initiated access, which is where properly built authentication usually gets undone.
Access control and data isolation
Whether a user can reach another user data by changing an identifier, whether role checks are enforced server-side rather than hidden in the interface, and whether tenant boundaries hold under direct request.
Dependency and supply chain review
Outdated and vulnerable packages including transitive ones, lockfile integrity, build and deployment pipeline permissions, and a monitoring setup so the next disclosure is noticed without anyone remembering to check.
Secrets and configuration audit
Keys and credentials in repositories, history, build logs, and client bundles; how environment configuration is stored and who can read it; and a rotation plan for anything that has been exposed longer than it should have been.
Browser and transport controls
Content security policy, transport security, cookie attributes, cross-origin configuration, and cross-site request protection — set to what the site actually needs rather than relaxed once for a vendor and left that way.
Marketing stack and third-party scripts
The tag container treated as code: an inventory of what is live, who can publish, what each vendor script can reach, what customer data leaves for advertising platforms, and whether consent configuration matches what actually fires.
Infrastructure hardening
Remote access, firewall posture, patch discipline, certificate and transport configuration, and backup integrity — verified by a tested restore, because an untested backup is a hypothesis.
Monitoring, response, and review cadence
Logging and alerting that would let you detect and reconstruct an incident, a written response plan including notification obligations, and a documented review cycle with retesting so security stays a practice rather than a project.
Findings arrive
Severity-rated, with reproduction
Fixes are
Retested, not assumed closed
In scope
The marketing tag surface, not only the app

Related areas

Other parts of my practice that overlap with this one.

Email Consulting

Lifecycle, deliverability, and the customer data underneath — email as a revenue channel, not a send calendar.

Agency Advisory

Whether the agency relationship is structured to work — and whether you could leave it if it did not.