Sooner or later, someone outside your company will find a security weakness in your product. It might be a misconfigured storage bucket, an access control gap in an API, or a forgotten admin page. The question is not whether this will happen. It is whether that person can easily tell you about it, and whether you are ready to respond.
Many startups have no clear answer. Researchers end up emailing a general support address, messaging the founder on social media, or giving up entirely. Some reports get ignored and later become public. A vulnerability disclosure policy and a security.txt file fix this with very little effort. This guide explains how to set both up and how to handle reports when they arrive.
A vulnerability disclosure policy (VDP) is a public page that tells security researchers:
It is different from a bug bounty. A VDP is a front door for reports. A bug bounty adds financial rewards on top. You can, and usually should, have a VDP long before you consider a bounty.
security.txt is a simple standard, published as RFC 9116, that puts your security contact details in a predictable location: https://yourdomain.com/.well-known/security.txt. Researchers and automated tools check this path first. A minimal file looks like this:
Contact: mailto:security@yourdomain.com Expires: 2027-11-01T00:00:00Z Policy: https://yourdomain.com/security-policy Preferred-Languages: en
The Contact and Expires fields are required by the standard. The expiry date prompts you to review the file regularly so contact details do not go stale. Optional fields include links to an encryption key, an acknowledgments page and hiring information.
Consider an illustrative scenario. A small B2B SaaS team has no security page. A researcher notices that changing an ID in an API request returns another customer's invoice data, a classic insecure direct object reference. They try the support chat and get an automated reply about billing. They email the founder's address from LinkedIn, but it lands in a promotions folder.
Weeks pass. The researcher, unsure whether anyone has seen the report, considers posting a vague warning publicly. Fortunately, a developer spots the email during a mailbox clean-up, and the team fixes the bug within a day.
Now picture the same team with a VDP and security.txt in place. The researcher finds the contact address in seconds. An auto-acknowledgement confirms receipt and sets expectations. A named engineer triages within a couple of days, confirms the issue, ships a fix, and thanks the researcher publicly. Same bug, very different risk. The policy did not make the code more secure on its own, but it shortened the time the vulnerability stayed open and removed the chance of uncoordinated disclosure.
Set up an address such as security@yourdomain.com that goes to at least two people. Avoid routing it into a general support queue where it might be treated as a normal ticket. Make sure spam filters do not catch messages with attachments or technical content.
List which domains, apps and APIs are in scope. Then list exclusions, for example third-party services you do not control, staging environments that are not public, or physical security. Clear scope saves both you and researchers time.
Explain what researchers may and may not do. Common rules include:
Researchers worry about legal risk. A short statement saying you will not pursue legal action against good-faith research that follows the policy makes people far more willing to report. Have a lawyer review the wording for your jurisdiction, since rules differ across countries.
State when you will acknowledge reports and how often you will provide updates. Choose timelines you can actually meet. Promising a reply within hours and then missing it does more harm than a realistic commitment of a few working days.
Put the policy on a stable URL, link it from your site footer, and publish security.txt at the well-known path. If you have multiple domains, place the file on each one or point them to a canonical version. Set a calendar reminder before the Expires date.
When a report arrives, someone should:
A shared private tracker is enough for most startups. Keep security issues out of public repositories and general project boards.
After a fix ships, ask the researcher to verify it if they are willing. Then look for the same class of bug elsewhere. If one endpoint had broken access checks, others may too. This is also a good moment for a short internal review, similar to a postmortem.
An acknowledgments page that credits researchers by name or handle (with their permission) costs nothing and builds goodwill. Many researchers value public credit as much as payment.
Once your team can reliably triage and fix reports, you might consider a paid bounty, either self-run or through a platform. Bounties attract more attention, which means more reports, including low-quality ones. Only scale up when you have the capacity.
You do not need a long legal document. A clear policy page for an early-stage startup can follow this outline:
Write it in the same friendly voice you use with customers. Researchers read many of these pages, and a respectful, clear one stands out. Revisit it whenever you launch a new product, add a domain, or change who handles security reports.
A disclosure policy is a safety net, not a substitute for building securely. It works alongside other practices:
A security inbox that nobody reads is worse than no inbox at all. It creates the expectation of a response and then breaks it.
If you are building a new product and want security practices built in from the start, including access control design, secure APIs and a disclosure process ready for launch, our web development team treats these as standard parts of delivery rather than optional extras.
A vulnerability disclosure policy and a security.txt file are among the simplest, cheapest security improvements a startup can make. They give well-meaning researchers a clear path, give your team a process, and give customers confidence. Set up a monitored inbox, define scope and rules, offer safe harbour, commit to realistic timelines, and publish the file. Then make sure someone actually reads what arrives. When the first report comes in, you will be ready.