Test endpoints for validating SRI (Subresource Integrity) and CSP (Content Security Policy) monitoring tools
Always returns a correctly configured page:
integrity attributes (SHA-384)script-src 'self' 'nonce-...'nonce attributeUse case: Baseline for "passing" security checks
Always returns a misconfigured page:
integrity attributeUse case: Baseline for "failing" security checks
Fully configurable endpoint with query parameters to control behavior:
Use case: Test specific scenarios and edge cases
| Parameter | Values | Default | Description |
|---|---|---|---|
js |
a | b | random | always |
a |
Global JS mode for all scripts |
analytics |
a | b | random | always |
(uses js) |
Override for analytics.js |
utils |
a | b | random | always |
(uses js) |
Override for utils.js |
tracker |
a | b | random | always |
(uses js) |
Override for tracker.js |
JS Modes:
a - Serve variant A (stable, known hash)b - Serve variant B (stable, different known hash)random - Randomly pick A or B each request (can flip back and forth)always - Append timestamp (ALWAYS changes, unique each request)| Parameter | Values | Default | Description |
|---|---|---|---|
sri_present |
0.0 - 1.0 |
1.0 |
Probability integrity attribute is included |
sri_valid |
0.0 - 1.0 |
1.0 |
When SRI present, probability hash is correct |
| Parameter | Values | Default | Description |
|---|---|---|---|
csp |
strict | weak | none | random |
strict |
CSP header mode |
csp_strict_ratio |
0.0 - 1.0 |
0.5 |
When csp=random, probability of strict CSP |
| Parameter | Values | Default | Description |
|---|---|---|---|
inline |
none | all | nonce_only |
all |
Which inline scripts to include |
inline_js |
a | b | random | always |
a |
Global inline script variant |
inline_basic |
a | b | random | always |
(uses inline_js) |
Override for basic inline script |
inline_id |
a | b | random | always |
(uses inline_js) |
Override for script with id |
inline_nonce |
a | b | random | always |
(uses inline_js) |
Override for nonce script |
inline_data |
a | b | random | always |
(uses inline_js) |
Override for data URI script |
inline_nonce_valid |
0.0 - 1.0 |
1.0 |
Probability nonce is valid |
Inline Script Types:
<script> - Basic inline script (no nonce)<script id="..."> - Inline script with id attribute<script nonce="..."> - Inline script with nonce (valid or invalid)<script src="data:..."> - Data URI script (base64 encoded)Each request randomly picks A or B (may flip between requests)
Scripts have unique content every request (timestamp appended)
CSP randomly strict or weak each request
JS changes, SRI present but always mismatched
Everything random - stress test your monitoring
Nonce-protected inline script has invalid nonce
Include only the nonce-protected inline script
All endpoints include debug headers for monitoring verification:
X-Test-State: good | bad | mixed
X-Test-Config: js=random;sri_present=0.8;sri_valid=0.9;csp=random
X-JS-Variants: analytics=a;utils=b;tracker=always-1734567890
Cache-Control: no-store, no-cache, must-revalidate
default-src 'none'; script-src 'self' 'nonce-...'; style-src 'self' 'nonce-...'; ...default-src *; script-src 'self' 'unsafe-inline' 'unsafe-eval'; ...