SAFE-FIRST PROBES · EVIDENCE · REMEDIATION

Web Security Payload Field Manual

Context-aware probes for authorized web security testing, with expected signals, stop conditions, and root-cause fixes.

Authorized testing only Start with a safe-first probe. Stop when the security boundary is proven.
Read the testing method
12test categories
59reviewed probes
Safe-firstrisk labels
2026-07-29last reviewed

XSS PLAYBOOK

Cross-Site Scripting

Trace untrusted input to its exact browser context before trying an executable proof.

5 probes
01

Reflection canary

Safe first

Map reflection and encoding without executing script.

sc-xss-7f3a<>'"&
What to watch

The marker appears in HTML, an attribute, JavaScript, CSS, or a URL. Record which characters are encoded and where.

02

HTML element context

Active proof

Confirm executable markup only after raw HTML injection is established.

<img src=x onerror=alert(location.origin)>
What to watch

A dialog shows the current origin. If markup renders but the handler does not run, inspect CSP and sanitization.

03

Double-quoted attribute

Context specific

Test whether a double-quoted attribute can be closed and a new event attribute added.

" autofocus onfocus=alert(location.origin) x="
What to watch

Focus reaches the injected element and the handler runs. This payload is invalid for single-quoted or unquoted contexts.

04

Single-quoted JavaScript string

Context specific

Test insertion inside a single-quoted JavaScript string.

';alert(location.origin);//
What to watch

The string terminates, the call executes, and the remaining source is commented. Escaping rules change for JSON and template literals.

05

DOM hash source

Active proof

Check whether client-side code moves location.hash into an HTML sink.

#<img src=x onerror=alert(location.origin)>
What to watch

The fragment is not sent to the server, so execution indicates a browser-side source-to-sink path.

SQLi PLAYBOOK

SQL Injection

Change one input at a time and compare a true condition with a false control.

5 probes
01

Quote differential

Safe first

Detect an unhandled string delimiter with the smallest possible mutation.

'
What to watch

A repeatable status, body, header, or timing change may indicate query parsing. A generic 500 alone is not proof.

02

String true control

Read-only probe

Create a true predicate in a common single-quoted WHERE context.

' AND '1'='1'-- 
What to watch

Compare against the false control using the same request and stable application state.

03

String false control

Read-only probe

Provide the negative control for boolean-based testing.

' AND '1'='2'-- 
What to watch

A consistent content or behavior difference between true and false conditions is stronger evidence than either response alone.

04

Numeric false control

Read-only probe

Test a numeric expression without introducing a quote.

1 AND 1=2
What to watch

An empty result or changed response compared with the original numeric value can reveal expression evaluation.

05

MySQL short delay

Explicit scope

Validate a blind MySQL path when content-based controls are unavailable.

' AND SLEEP(2)-- 
What to watch

Use repeated baseline and delayed samples. Network jitter or slow application code can create false positives.

SSRF PLAYBOOK

Server-Side Request Forgery

Begin with a unique callback you control. Internal addresses require explicit authorization.

5 probes
01

Controlled callback

Safe first

Detect server-side DNS or HTTP access without targeting internal infrastructure.

https://unique-id.your-callback.example/
What to watch

Correlate a unique token, timestamp, source address, DNS lookup, and HTTP request in your callback logs.

02

Redirect revalidation

Controlled host

Check whether policy is applied to every redirect hop.

https://your-callback.example/redirect-to-approved-target
What to watch

A callback from the first hop is expected; reaching a disallowed second destination indicates incomplete revalidation.

03

IPv4 loopback

Explicit scope

Test whether the server can reach its own loopback interface.

http://127.0.0.1/
What to watch

A response that differs from a controlled unreachable address may indicate internal access, but error handling can obscure results.

04

IPv6 loopback

Explicit scope

Find validation that blocks IPv4 loopback but misses IPv6.

http://[::1]/
What to watch

Compare with the IPv4 result and a negative control. The target service may not listen on IPv6.

05

Reserved documentation address

Negative control

Use an RFC 5737 documentation address as a non-production negative control.

http://192.0.2.1/
What to watch

This address should not identify a real Internet host. Fast rejection versus a timeout can reveal validation behavior, not SSRF by itself.

Root-cause fix

Resolve and validate destinations against strict allowlists, block private and special-use ranges after every redirect, restrict outbound network access, and disable unused URL schemes.

SSTI PLAYBOOK

Server-Side Template Injection

Use arithmetic fingerprinting. Do not jump from evaluation to command execution.

5 probes
01

Literal canary

Safe first

Observe whether template-looking input remains literal or triggers a controlled error.

sc-ssti-7f3a{{not_a_real_name}}
What to watch

A literal echo is not vulnerable. Removal, substitution, or a template-specific error justifies engine-aware testing.

02

Jinja2 or Twig arithmetic

Non-destructive

Test expression evaluation without reading data or invoking functions.

{{7*7}}
What to watch

A rendered value of 49 suggests evaluation, but multiple engines share this syntax.

03

Engine differential

Fingerprint only

Distinguish engines that repeat strings from engines that coerce or reject the expression.

{{7*'7'}}
What to watch

For example, Jinja2 commonly renders seven copies of 7 while Twig commonly renders 49. Version and configuration can differ.

04

Expression Language

Non-destructive

Check Java EL, FreeMarker, and other dollar-brace expression contexts.

${7*7}
What to watch

A value of 49 indicates expression handling but does not identify the engine by itself.

05

ERB arithmetic

Non-destructive

Test an ERB-style output expression without accessing files or executing commands.

<%= 7*7 %>
What to watch

A rendered value of 49 indicates evaluation in an ERB-like context.

JWT PLAYBOOK

JSON Web Token Validation

Change one header or claim at a time. Decoding a token is not signature verification.

5 probes
01

Baseline header review

Inspection

Record the token type, algorithm, and key identifier before making changes.

{"alg":"RS256","typ":"JWT","kid":"key-2026-07"}
What to watch

The server must choose acceptable algorithms and key sources from configuration, not trust arbitrary header values.

02

Unsigned token rejection

Test account only

Confirm that an unsigned token is rejected even if its claims look valid.

{"alg":"none","typ":"JWT"}
What to watch

Any authenticated response is a failure. A robust implementation rejects the token before authorization logic.

03

Expired token

Safe negative

Verify that an expiration in the past is enforced.

{"exp":1}
What to watch

The token should be rejected with a consistent authentication error. Allow only a small documented clock-skew window.

04

Audience mismatch

Safe negative

Confirm that a token minted for another recipient is not accepted.

{"aud":"https://not-this-service.example"}
What to watch

The service should reject the token even when the signature is otherwise valid.

05

Remote key header

Controlled host

Confirm that the verifier does not fetch keys from an attacker-selected URL.

{"jku":"https://your-controlled.example/jwks.json"}
What to watch

No callback should occur and the token should be rejected unless the URL is on a strict, intentional allowlist.

Traversal PLAYBOOK

Path Traversal

Use a harmless fixture created for the test. Avoid reading operating-system or application secrets.

5 probes
01

Controlled parent path

Safe fixture

Attempt to read a harmless fixture placed one directory above the intended root.

../sc-traversal-proof.txt
What to watch

A unique fixture marker proves boundary escape without exposing sensitive files.

02

URL-encoded parent path

Safe fixture

Check whether decoding occurs after an early validation step.

%2e%2e%2fsc-traversal-proof.txt
What to watch

The same fixture appears only for the encoded request, indicating inconsistent normalization order.

03

Double-encoded parent path

Safe fixture

Detect a second decoding layer between a proxy, framework, and file API.

%252e%252e%252fsc-traversal-proof.txt
What to watch

The fixture appears after multiple decode passes. Confirm the exact component sequence before reporting.

04

Windows separator

Safe fixture

Test path handling on Windows or cross-platform libraries.

..\sc-traversal-proof.txt
What to watch

The fixture appears when backslashes are interpreted as directory separators.

05

Absolute-path rejection

Safe fixture

Confirm that an absolute path cannot bypass the intended base directory.

/tmp/sc-traversal-proof.txt
What to watch

A controlled fixture outside the content root must remain inaccessible.

Root-cause fix

Map opaque identifiers to server-side paths, resolve and canonicalize paths before enforcing an allowed base directory, reject alternate separators, and run with minimal file permissions.

Command PLAYBOOK

OS Command Injection

Use a unique printed marker. Do not read files, open shells, or make external connections.

5 probes
01

Semicolon marker

Explicit scope

Test command separation with a harmless, deterministic output marker.

;printf sc_cmd_7f3a
What to watch

The marker appears in the response or captured process output.

02

AND operator marker

Explicit scope

Test execution after a preceding command succeeds.

&&printf sc_cmd_7f3a
What to watch

The marker appears only when the original command returns success.

03

Pipe marker

Explicit scope

Test whether input reaches a shell pipeline.

|printf sc_cmd_7f3a
What to watch

The marker appears even though pipeline behavior may replace or combine normal output.

04

Encoded newline

Explicit scope

Check whether URL decoding introduces a command separator.

%0aprintf%20sc_cmd_7f3a
What to watch

The marker appears after a decoding layer converts %0a to a newline.

05

Short timing control

Rate limited

Validate blind execution when output is not returned.

;sleep 2
What to watch

Repeated requests show a stable two-second delta over baseline. Use low concurrency and account for jitter.

XXE PLAYBOOK

XML External Entity

Prove entity processing with an internal marker before attempting any external lookup.

4 probes
01

Internal entity marker

Safe first

Detect DTD and entity expansion without file or network access.

<?xml version="1.0"?><!DOCTYPE r [<!ENTITY sc "sc_xxe_7f3a">]><r>&sc;</r>
What to watch

The parsed value contains sc_xxe_7f3a. Internal expansion alone is not proof that external entities are enabled.

02

External HTTP callback

Controlled host

Confirm external entity resolution against a host you control.

<?xml version="1.0"?><!DOCTYPE r [<!ENTITY sc SYSTEM "https://unique-id.your-callback.example/xxe">]><r>&sc;</r>
What to watch

A correlated DNS or HTTP callback proves outbound resolution. The XML response need not include callback content.

03

XInclude callback

Controlled host

Test XInclude processing when you cannot control the XML document type.

<r xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="https://unique-id.your-callback.example/xinclude" parse="text"/></r>
What to watch

A callback or included controlled marker indicates that XInclude is processed.

04

SVG internal entity

Safe first

Check an image-processing path with a non-network entity marker.

<?xml version="1.0"?><!DOCTYPE svg [<!ENTITY sc "sc_svg_7f3a">]><svg xmlns="http://www.w3.org/2000/svg"><text>&sc;</text></svg>
What to watch

The rendered or transformed output contains the unique text marker.

Root-cause fix

Disable DTD and external entity resolution, use hardened parsers, reject unexpected XML, and restrict outbound access from parsers and transformation services.

Redirect PLAYBOOK

Open Redirect

Use a harmless destination you control and verify the actual Location header.

5 probes
01

Absolute external URL

Controlled host

Test whether a redirect parameter accepts an arbitrary origin.

https://your-controlled.example/sc-redirect
What to watch

A 3xx Location header or client-side navigation reaches the exact controlled URL.

02

Scheme-relative URL

Controlled host

Check validation that only rejects strings beginning with http.

//your-controlled.example/sc-redirect
What to watch

The browser inherits the current scheme and navigates to the controlled host.

03

Backslash authority

Browser dependent

Identify URL parsers that normalize backslashes into authority separators.

\\your-controlled.example\sc-redirect
What to watch

Browser and server parsing can differ. Confirm the final browser destination rather than relying only on string validation.

04

Userinfo confusion

Controlled host

Check whether validation mistakes userinfo for the destination host.

https://trusted.example@your-controlled.example/
What to watch

The actual host is your-controlled.example; trusted.example is the username component.

05

Encoded scheme-relative URL

Controlled host

Check whether validation and redirect execution happen before and after different decode steps.

%2f%2fyour-controlled.example%2fsc-redirect
What to watch

The final Location value or browser destination resolves to the controlled host.

NoSQL PLAYBOOK

NoSQL Injection

Use impossible predicates as negative controls. Test authentication logic only with dedicated accounts.

5 probes
01

JSON type mismatch

Safe first

Check whether an endpoint enforces a string schema before building a query.

{"username":{"unexpected":"sc_probe"}}
What to watch

A clean 4xx validation error is expected. Query-engine errors or changed results indicate unsafe type handling, not necessarily injection.

02

MongoDB impossible operator

Negative control

Detect whether a client-supplied MongoDB operator reaches the query layer.

{"username":{"$eq":"sc-user-that-cannot-exist"}}
What to watch

Compare with the same impossible value as a plain string. A behavior difference suggests operator interpretation.

03

MongoDB not-equal operator

Test account only

Test operator injection using a dedicated test workflow.

{"username":{"$ne":"sc-user-that-cannot-exist"}}
What to watch

Broader results or an authentication-state change indicates unsafe query construction. Stop after minimal proof.

04

Query-string operator

Negative control

Check frameworks that parse bracket notation into nested objects.

username[$eq]=sc-user-that-cannot-exist
What to watch

Compare with username=sc-user-that-cannot-exist and inspect server-side parsing if available.

05

Regex exact negative

Negative control

Test regex operator handling without enumerating real usernames.

{"username":{"$regex":"^sc_user_that_cannot_exist$"}}
What to watch

A difference from the equivalent plain string can reveal operator acceptance while preserving a no-match control.

CORS PLAYBOOK

CORS Validation

CORS is enforced by browsers. Inspect both preflight and actual responses with and without credentials.

5 probes
01

Untrusted origin

Safe first

Check whether an arbitrary origin is reflected or broadly allowed.

Origin: https://your-controlled.example
What to watch

Access-Control-Allow-Origin matching the untrusted origin is risky when sensitive data is available, especially with credentials.

02

Null origin

Safe request

Test whether sandboxed documents, local files, or opaque origins are trusted.

Origin: null
What to watch

Access-Control-Allow-Origin: null can expose data when attackers can generate a null origin.

03

Trusted-prefix confusion

Controlled host

Find suffix or substring checks that mistake an attacker domain for a trusted origin.

Origin: https://trusted.example.your-controlled.example
What to watch

The server must reject this unless the exact origin is intentionally trusted.

04

Trusted-suffix confusion

Review ownership

Test weak prefix checks and document the actual DNS ownership boundary.

Origin: https://your-controlled.example.trusted.example
What to watch

Acceptance may be intended only if trusted.example controls and secures every possible subdomain.

05

Credentialed preflight

Safe request

Inspect the policy returned before a cross-origin API request.

OPTIONS /api/account HTTP/1.1
Origin: https://your-controlled.example
Access-Control-Request-Method: GET
What to watch

Review Access-Control-Allow-Origin, Access-Control-Allow-Credentials, allowed methods and headers, and Vary: Origin together.

Root-cause fix

Allowlist exact trusted origins, emit Vary: Origin for dynamic decisions, never combine wildcard origins with credentials, and keep server-side authorization mandatory.

Headers PLAYBOOK

HTTP Security Headers

Treat headers as browser policy, not substitutes for secure application logic.

5 probes
01

Content Security Policy baseline

Adapt before use

Establish a restrictive starting policy before adding required sources and script nonces.

Content-Security-Policy: default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'
What to watch

Check browser console violations and verify that the final policy does not rely on unsafe-inline or broad wildcards.

02

Transport security

Stage carefully

Tell supporting browsers to use HTTPS for the host and its subdomains.

Strict-Transport-Security: max-age=31536000; includeSubDomains
What to watch

Send HSTS only over HTTPS. Add includeSubDomains only after every subdomain supports HTTPS; preload has separate requirements and consequences.

03

MIME sniffing

Recommended

Require browsers to honor declared MIME types in relevant script and style contexts.

X-Content-Type-Options: nosniff
What to watch

Verify accurate Content-Type headers too; nosniff does not repair an incorrect media type.

04

Referrer policy

Review privacy

Send full referrers on same-origin requests and only the origin cross-origin, while avoiding HTTPS-to-HTTP leakage.

Referrer-Policy: strict-origin-when-cross-origin
What to watch

Choose a stricter value if paths or query strings contain sensitive data.

05

Permissions policy

Adapt before use

Disable browser capabilities the application does not require.

Permissions-Policy: camera=(), microphone=(), geolocation=()
What to watch

Inventory real feature and iframe needs before rollout; unsupported directives are ignored by browsers.

FIELD METHOD

From probe to defensible finding

A copied string is never the test by itself. Context, a negative control, repeatable evidence, and a root-cause fix turn an observation into a useful finding.

  1. 01
    Confirm scope

    Check the asset, account, test window, prohibited techniques, data rules, and stop conditions.

  2. 02
    Map the context

    Record where input travels and which parser, browser, query, template, or process handles it.

  3. 03
    Use a control

    Compare one changed input against a stable baseline and an expected-negative request.

  4. 04
    Capture minimal evidence

    Preserve the request, response, timestamp, account, environment, and observed security boundary.

  5. 05
    Stop and remediate

    Do not escalate after impact is clear. Explain the root cause, safe fix, and retest condition.