ShipGuardScan a site
B

Security scorecard

grafista.io

Score 82/100 · 3 failed · 0 warnings · 7 passed · 1 not applicable

Scanned 2026-10-21 12:02 UTC in 10.3s · 29 requests · 23 scripts · Detected: Next.js

Top finding (free)

mediumConfirmedfailSecurity headers

Missing Strict-Transport-Security (HSTS)

Without HSTS, a first visit over an untrusted network can be downgraded to HTTP.

Confirmed from the HTTP response headers of the main document.

Locations

  • https://grafista.io/
Copy-paste fix prompt
Security fix for this v0 / Next.js app.

Add the header `Strict-Transport-Security: max-age=31536000; includeSubDomains` to every HTTPS response (in Next.js via `headers()` in next.config, on Vercel via vercel.json, on Netlify via _headers).

Use route handlers or server actions for privileged work, keep secrets in non-NEXT_PUBLIC_ env vars behind `import "server-only"`, and set headers in next.config.

10 more checks

lowConfirmedfailSecurity headers
Details, location & fix prompt locked
lowConfirmedfailSecurity headers
Details, location & fix prompt locked
criticalpassClient secrets
Details, location & fix prompt locked
criticalpassExposed artifacts
Details, location & fix prompt locked
highpassExposed artifacts
Details, location & fix prompt locked
highpassTransport
Details, location & fix prompt locked
mediumpassSecurity headers
Details, location & fix prompt locked
lowpassExposed artifacts
Details, location & fix prompt locked
lowpassSecurity headers
Details, location & fix prompt locked
highskippedSupabase / BaaS
Details, location & fix prompt locked

Heuristic match = a string in your public JavaScript/HTML looks like a secret (likely, not verified). Confirmed = directly observed in an HTTP response (e.g. a header is absent, a file's contents were validated). All checks are passive and read-only; secrets are stored redacted to their first 6 characters. A good grade is not a guarantee of security.