Earthshaker Security Book a scan

← All field notes

saas 15 September 2026 · 7 min read

What SaaS penetration testing covers

Identity, sessions, multi-tenant authorisation and API access control — the SaaS-specific failures a general web application test tends to miss.

A SaaS product is rarely one application behind one login. It is an API with a web client in front of it, several kinds of user, and tenants who must never see each other’s data. Testing it means validating how identity, sessions, authorisation and integrations behave under attack-like conditions — not just crawling the UI.

What it covers in practice

A SaaS penetration test is a structured assessment of the live SaaS environment from an attacker’s perspective. The goal is not to disrupt service, it is to identify and prove security weaknesses in the parts of the platform that process data and grant access.

We cover the web application and the programmable interfaces behind it. That usually includes authenticated and unauthenticated flows, plus the API and endpoint routes that power your SPA, mobile client, or integrations.

Why SaaS changes the threat model

Traditional web testing assumes a single application boundary. SaaS breaks that assumption. A modern SaaS system is often an API-first service with delegated access to user organisations, and complex identity flows.

That is why identity and authorisation testing has to be a first-class part of the work rather than an afterthought. The platform can be “safe” in the UI, while still exposing data through API routes, token handling, or role-based access bugs.

Common categories we validate with generally verifiable methods include:

How we run one, from recon to re-test

We structure the work into phases to keep results reproducible and scoped. Our approach is proof-focused, we test to demonstrate that a weakness exists and can affect security outcomes, not to cause damage.

We work in a staged sequence:

  1. Recon to map what the internet can see without touching anything.
  2. Enumeration to build the application map using automated crawling and manual review.
  3. Exploitation, proof only to validate impact with reproduction-focused testing.
  4. Report with severity, evidence, and reproduction steps alongside fixes.
  5. Remediation and re-test to verify that changes closed the engagement findings.

We do not treat this as a black box. The scope is documented, and we start from an authorization letter. That scope discipline matters for SaaS because it prevents accidental testing of areas that should remain out of bounds.

If you want the structure we use, see our methodology overview.

What we look for in SaaS authentication and session handling

In many SaaS systems, identity is the control plane. If authentication or session handling is wrong, authorisation checks can be bypassed indirectly through session misuse, recovery edge cases, or inconsistencies between UI and API checks.

We focus on behaviours that are practical to reproduce: session lifecycle, cookie flags, redirect handling, and the way the platform treats different user roles and authentication states.

Typical validation areas include:

We also look for “UI safe, API unsafe” patterns. A user might be blocked in the interface, but an API endpoint can still return unauthorised data if the access checks are incomplete.

API and endpoint testing for multi-tenant access control

This work turns into API testing by necessity. The product is frequently accessed through a SPA and mobile clients, and the real security boundary is the API authorisation logic.

Multi-tenant systems introduce additional complexity. The same endpoint may behave differently depending on the tenant context, workspace identifiers, or membership relationships. We validate that tenant scoping is enforced consistently.

In practice, our API testing includes:

  1. Route discovery for documented and non-documented endpoints.
  2. Role and permission matrix validation across typical user roles (for example, admin versus member).
  3. Object-level access checks by attempting to access resources outside the permitted scope.
  4. Parameter tampering to detect missing validation on identifiers passed by clients.
  5. Data exposure review across paginated endpoints, export functions, and bulk operations.

We keep the work proof-only. That means we demonstrate that the access control failure exists, then stop. We do not use the weaknesses as a persistence mechanism or attempt to broaden impact beyond the scoped conditions.

If you want to see how we package the work, the services page lists our web application penetration test, API and endpoint testing, and external attack surface review categories.

Configuration and hardening checks that actually matter

Configuration and hardening work is not a checkbox exercise. We focus on controls that affect how the platform behaves in a real browser and in real client-to-server interactions.

In our coverage, configuration checks commonly include:

Configuration issues often combine with other weaknesses. For example, an authorisation bug becomes more serious when session handling and browser controls are misconfigured. This is why we treat these checks as evidence that supports or constrains the impact of the core findings.

Interpreting results: evidence, reproduction, and closure

A test is only useful if the output lets you fix the problem and confirm the fix. That is why we deliver a dated report with written scope, evidence, and reproduction steps.

When you review results, you should be able to answer three questions quickly:

We also support closure with remediation and re-test. That closes the loop, because fixes can be incomplete when the problem spans UI, API, and identity checks.

If you want to see an example report structure, use our report sample.

Scoping it properly

Scoping is where most engagements win or fail. A good scope is specific enough to prevent misunderstandings, but flexible enough to cover the real attack paths.

Prepare scope inputs in these areas:

The only pricing figures we publish are on our pricing page.

Frequently Asked Questions

How is this different from a normal web application test?

It focuses on the SaaS-specific attack paths, especially authentication, session handling, authorisation, and API access control. Web app testing can miss SaaS failures where the UI behaves correctly but the API exposes data.

What should we include in the scope?

Include the web application surfaces, the API and endpoint routes, and the identity and role context that gates access. For SaaS, scoping should also cover multi-tenant or workspace behaviours and any integration flows your customers use.

Do we need to test authenticated users?

Yes, because many real SaaS exposure paths appear only after login. Authenticated testing validates role-based access and authorisation checks on API endpoints and protected workflows.

How do the reports help engineers fix things?

We provide evidence and reproduction steps that map to the observed weakness, plus remediation guidance. That format is meant to let your team confirm behaviour before and after changes with re-testing.

How long does it take?

Time depends on scope and the number of external surfaces, endpoints, and identity paths that are included. If you need a concrete timeline for your environment, we base it on the scope after reviewing your URL and requirements.

Is it worth it if we already run automated scanning?

Automated scanning can miss logic flaws in authorisation and multi-step workflows. A manual test adds proof-focused validation across recon, enumeration, exploitation, and confirmation, so you can prioritise fixes with evidence.

Conclusion

Testing a SaaS product has to follow how it actually works: identity and sessions, API access control, and the tenant context that decides what data a user can reach. We run proof-focused testing, produce a report with evidence and reproduction steps, and support remediation verification with re-test, so the outputs drive engineering fixes rather than tool results.

If you want that run against your own product, send us a URL.

Next
Want this run against your app?
Book a scan