Why scanners are not enough for applications
Automated scanners are good at finding known technical patterns — an outdated library, a missing security header, an obvious injection point. They are structurally incapable of understanding your application's business logic.
A scanner cannot tell that changing an invoice ID in a URL returns another customer's data, that a discount code can be applied repeatedly, or that a password-reset flow lets you specify another user's email. These flaws are invisible to tooling and are precisely what attackers exploit — because they require no exploit code at all.
What we test
| Category | Examples |
|---|---|
| Broken access control | Accessing other users' records, privilege escalation, forced browsing to admin functions |
| Injection | SQL, command, template and LDAP injection |
| Authentication | Weak session handling, credential stuffing exposure, flawed password reset, MFA bypass |
| Business logic | Price manipulation, workflow bypass, repeated discount abuse, negative quantities |
| Cross-site scripting | Stored, reflected and DOM-based XSS |
| Configuration | Verbose errors, exposed admin panels, insecure headers, permissive CORS |
| File handling | Unrestricted upload, path traversal, insecure deserialisation |
Testing perspectives
- Unauthenticated — what an anonymous internet user can do.
- Authenticated, standard user — what a legitimate customer or employee can reach beyond their entitlement. This perspective finds the most serious issues.
- Cross-account — whether one user can access another's data, the classic broken-access-control failure.
- Privileged — whether administrative functions are properly protected.
Our approach
- Scoping — application URLs, environments, test accounts, roles and constraints agreed in writing.
- Mapping — enumerating functionality, roles, endpoints and data flows.
- Automated pass — for breadth and known technical issues.
- Manual testing — access control, authentication and business logic, which is where the value is.
- Validation — proving impact without damaging data.
- Reporting — reproducible steps, evidence, business-risk rating and specific remediation guidance.
- Retest — confirming fixes are effective.
Test environment or production?
A staging environment that mirrors production is ideal, because it allows thorough testing without any risk to live data. In practice, staging often differs from production in configuration, so where we must test production we agree strict constraints: no destructive actions, careful handling of records, and agreed timing windows.
When to test
- Before launching a new application or major feature
- Annually for any application handling customer data or payments
- After significant architectural change or framework upgrades
- When a customer or partner requires assurance