Launch sale: 20% off Fix Pack, Deep Audit and Monitor through Nov 30, 2026. The scan stays free. See sale prices →

Fix guides

Every issue Unspill reports links here. Each guide explains the risk, gives step-by-step fixes and a prompt you can paste into your AI builder.

Leaked secrets

Supabase service_role key exposed

A Supabase service_role (or sb_secret_) key in front-end code gives anyone full read/write access to your database, bypassing Row Level Security. Here is how to rotate it and fix the leak.

Stripe secret key exposed

A Stripe sk_live_ or sk_test_ key in your JavaScript lets anyone create charges, issue refunds and read your customers. Roll the key in the Stripe Dashboard and move payments server-side.

AI API key exposed

An OpenAI, Anthropic, Groq, OpenRouter or xAI key in your front-end bundle lets anyone run up your bill. Revoke it and proxy AI calls through a server function with rate limits.

AWS access key exposed

An AWS access key ID in your JavaScript usually ships with its secret. Deactivate it in IAM, check CloudTrail, and use presigned URLs or a server function instead.

Private key or Firebase admin credentials exposed

A private key or Google service-account JSON in browser code gives admin access to Firebase/Google Cloud. Delete the key in Google Cloud IAM and use the Admin SDK only on a server.

Third-party token exposed

Service tokens in front-end code (GitHub, Slack, SendGrid, Resend, Twilio) can be used by anyone to act as your account. Revoke them and move the calls server-side.

Possible hard-coded secret

Variables named secret, token, password or apiKey with long random values in front-end code are often real credentials. Check each one, rotate real secrets, and keep them server-side.

Google API key in client code

AIza keys in front-end code are fine for Firebase but dangerous for Gemini or paid Maps APIs. Restrict them by HTTP referrer and API in Google Cloud Console.

Database & backend

Exposed files

Browser hardening