Feature Description
Support optional Subresource Integrity (SRI) metadata for swagger-ui-dist CDN bundles
Provide published integrity= and crossorigin= attributes for official CDN‑hosted Swagger UI assets (e.g. swagger-ui-bundle.js, swagger-ui.css) to enable runtime integrity validation in browsers.
Problem it solves:
- Scanners currently flag missing integrity attributes as a security weakness.
- Without SRI, there’s no protection against CDN supply‑chain tampering.
- Security teams require measurable mitigation—even for client‑side docs.
- Resolves Security Weakness CWE-693, OWASP A1 Broken Access Control
Use Case
- Security tooling flags missing SRI on Swagger UI assets delivered via jsDelivr
- This causes false‑positive vulnerability findings across nearly all Swagger UI deployments using CDN.
- Teams want to satisfy compliance requirements with minimal overhead.
- Public or internal docs could benefit from SRI for trust and auditability.
Suggested Solution
- Automatically generate SRI hashes (e.g.
sha384‑...) for each release and surface them in package metadata or CDN meta pages.
- Provide example HTML snippets with
<script>/<link> including integrity and crossorigin="anonymous".
- Offer versioned integrity manifest files (e.g.,
.integrity.json) to support pinning across releases.
- Add
crossorigin="anonymous" hints to prevent integrity validation issues in browsers
Alternatives Considered
- Self‑hosting Swagger UI assets and generating hashes manually — works, but is brittle and maintenance-heavy, risks not getting updtes via FastAPI
- Restricting or disabling docs in production (e.g., with auth or IP filtering) — defeats the purpose of users reading documentation
Additional Context
✅ Checklist
Feature Description
Support optional Subresource Integrity (SRI) metadata for swagger-ui-dist CDN bundles
Provide published
integrity=andcrossorigin=attributes for official CDN‑hosted Swagger UI assets (e.g.swagger-ui-bundle.js,swagger-ui.css) to enable runtime integrity validation in browsers.Problem it solves:
Use Case
Suggested Solution
sha384‑...) for each release and surface them in package metadata or CDN meta pages.<script>/<link>includingintegrityandcrossorigin="anonymous"..integrity.json) to support pinning across releases.crossorigin="anonymous"hints to prevent integrity validation issues in browsersAlternatives Considered
Additional Context
✅ Checklist