← All field notes

Application Security Testing: Match the Test to the Risk

Different security tests answer different questions. Choose them around the application's sensitive information, account permissions and the consequences of a failure.

SecuritySoftwareDevOps

A security report can contain a long list of alerts without answering the question a business owner needs resolved: can someone misuse the application in a way that harms customers or operations?

Start by identifying what needs protection and how the application is used. Then choose tests that examine those risks. Source-code scans, dependency checks and hands-on testing can complement each other, but they do not provide the same evidence.

Describe what could go wrong

List sensitive information, important account roles, public forms, integrations and valuable actions. Consider whether a person could see another account's records, repeat a transaction or upload a harmful file. This is threat modelling: a structured discussion of possible misuse and the controls expected to prevent it.

Ask the provider which risks their test covers and which it leaves out. A generic scanner may find common weaknesses while missing a permission error that depends on understanding the business workflow.

Understand the different checks

Static analysis examines code without running the application. Dependency checks compare the components being used with known vulnerability information. Secret detection looks for exposed credentials. These checks help developers find problems close to the change that introduced them.

Dynamic testing examines a running application. It can reveal deployment behavior, unexpected responses and weaknesses that are hard to understand from code alone. Human testing adds value where several steps, account roles or business rules need to be considered together. The OWASP Web Security Testing Guide provides a structured reference for this work.

Check account boundaries directly

Ask how the test verifies that each role can access only its intended records and actions. Controls must hold on the server, even when a browser screen hides a button or restricts an input.

Use suitable test accounts and representative data. Agree how testing will avoid unwanted messages, disrupted services or changes to live records. Scope, timing and reporting arrangements should be settled before intrusive tests begin.

Make the findings useful

Each important finding should explain the affected feature, the likely consequence, how it was reproduced and who will address it. Priorities need to consider exposure and impact, rather than treating every alert equally.

Keep detailed findings restricted to the people who need them. Reports can contain information that would make an attack easier.

Ask for retesting, not just a closed ticket

After a repair, rerun the relevant test and retain the result. Add a repeatable check where practical so the same weakness is less likely to return. If a finding remains open, establish who owns the decision and when it will be reviewed.

The useful deliverable is a clear account of what was examined, what remains uncertain and which repairs were verified. No single test establishes that an application is secure in every respect.