Engineering

A practical pre-launch security review for a small team

Editorial · Reveneau · August 20, 2026

A practical pre-launch security review for a small team

Right before a launch, security often becomes a sudden worry. Someone asks "wait, are we secure?" and the honest answer nobody wants to say out loud is that no product is ever fully secure, so the question as asked has no good answer. What a small team actually needs is a short, practical check of the things that cause most real problems, done in plain language, so that you launch having fixed the weaknesses that attackers actually use. You can do that, even without a security expert on staff, as long as you know what to check and where your own limits are.

Perfect security is the wrong goal

Start by giving up the idea of perfect. Perfect security does not exist. Any system connected to the internet can, in principle, be attacked, and a determined enough attacker with enough resources can get into almost anything. If your standard for launch is "provably safe against everyone," you will never launch, and you will have spent the time on the wrong thing.

The right goal is different and reachable. Fix the common, serious weaknesses that ordinary attackers actually use, because most attacks are simple and opportunistic: they scan for the easy, well-known mistakes and use the ones people did not fix. And build the ability to notice and respond when something does go wrong, because eventually something will. A good product that is released and monitored is better than a perfect one that exists only as an idea. Aiming for reasonable safety is the mature version of the goal, and it skips no necessary work.

The five basics that find most real problems

For a small team before launch, most of the real risk is in five areas. Go through each one honestly and you will have found most of what would have hurt you.

The first is authentication, which is how your product confirms who a user is. Are passwords stored in a protected form rather than plain text? Are login sessions handled properly, so someone cannot easily steal or guess their way into another account? Is there an obvious way for an attacker to get in that you overlooked? Login is the first thing an attacker tries, and it needs to actually keep them out.

The second is access control, which is what each user is allowed to see and do once they are in. This is one of the most common serious problems on the web, and it is worth explaining in detail. The classic version is that a user can open someone else's data just by changing an ID in the address bar, because the code checked that they were logged in but forgot to check that this particular user was allowed to access this particular item. OWASP, a nonprofit focused on software security, has ranked broken access control first on its list of the most common web application risks. Go through every place that shows or changes sensitive data and confirm it asks the second question as well as the first: "are you logged in" and also "are you allowed to access this."

The third is secrets: your passwords, API keys, and tokens. These must never be stored in your code or in your version history, and never get sent to the browser or printed in logs. A key stored in a public code repository is one of the easiest things for an attacker to find, because they scan for exactly that. And here is the part people get wrong: if a secret was ever committed to your history, even if you deleted it later, treat it as exposed and replace it, because the old version is still there for anyone who looks.

The fourth is dependencies, the outside code your product is built on. Modern software depends on a lot of it, and that code sometimes has published security flaws that everyone, including attackers, can read about. Turn on a tool that automatically scans your dependencies and warns you when one has a known vulnerability, then update the ones that do. This is close to the highest value for the least effort of anything on this list.

The fifth is data handling. Protect sensitive information both while it is sent across the network and where it is stored. Collect only the personal data you actually need, because data you never collected cannot be stolen. And be careful what ends up in your logs, since logs are often less protected than your main database, and a password or a full card number written into a log file is a real exposure. This connects to the broader habit of not letting a rush to launch create hidden risks, which we wrote about in move fast without breaking the product.

Use a known list instead of your imagination

You do not have to invent this checklist from memory, and you should not try, because the things you forget are exactly where the risk is. OWASP publishes a free, widely used list called the OWASP Top Ten that names the most common and serious web application security risks, with plain explanations of each. For a small team it is the right starting point, because it shows you directly the problems attackers exploit most, rather than rare, unusual cases that are interesting to worry about but almost never the cause of a real attack.

Check your product against that list. For each risk, ask a simple question: could this happen to us, and if so, what would we do about it? Most items will match the five basics above. Using an outside, well-maintained list also protects you from the natural habit of checking only the things you already thought of, which are, by definition, not the things you missed.

Know when to bring in a specialist

A generalist pre-launch review handles the basics well, and for many products that is genuinely enough to launch responsibly. But some situations carry enough risk that you should bring in a security specialist, and knowing where that point is counts as doing this properly, with no failure on your part.

Bring in a specialist when the risk is high or the domain is sensitive. If you handle payments, health data, financial data, or large amounts of personal information, the cost of getting it wrong is severe, and a deeper expert review is worth the money. The same is true if you operate in a regulated industry with specific security and privacy requirements, or before a major launch where a breach would be damaging to trust or to the business. The pattern is simple: do the basics yourself because they are learnable and high-value, and pay for a specialist check when the harm from a missed problem is large. Choosing when to spend outside money on expertise you lack is the same judgment we described in in-house vs outsourced engineering.

What has to be right before you launch, and what can wait

Security is an ongoing practice, and you will keep improving it after launch. But a few things cannot wait for "later," because the moment real users and real data are in the product, a weakness in these becomes a real incident rather than a future task.

Before you go live, make sure of three things without exception. No secrets are exposed in your code or history. Users cannot reach each other's data. And login works safely. Everything else on the list should be handled too, but in those three a gap gives attackers a way in on the day you launch, so it cannot wait for the next sprint. After that, keep going: keep scanning dependencies, keep watching your logs for strange activity, and keep fixing weaknesses as you find them. Add the basics during the build rather than at the last minute, and the pre-launch review becomes a confirmation rather than a rush.

The takeaway is calmer than the launch-day panic suggests. Your aim is to fix the common serious weaknesses, protect your users' data, know when the risk is big enough to call in an expert, and be ready to respond when something gets past your checks. Do that, and you can launch calmly instead of with a vague fear that you forgot something important.

Reviewing generated code for security

One addition if a model wrote your implementation, because the risk profile is genuinely different rather than merely larger.

Generated code tends to be conventional, which helps: it uses standard libraries and common patterns rather than inventing its own cryptography. The failures appear in other places. Authorisation checks that exist in the main flow of the code and are missing in a less used one. Input validation that handles the input formats described in the specification and nothing else. Dependencies chosen because they were common in training data rather than because they are currently maintained, which makes dependency and licence scanning non-optional rather than good practice.

The habit worth building is to check the authorisation and validation code specifically, rather than reading the change from start to finish. Reading from start to finish is how you assess whether code is well written. Generated code is usually well written. That was never the question.

Sources

Common questions

What is a pre-launch security review?

It is a check you do before your product goes live to find the security problems that could hurt your users or your business. For a small team it does not have to be huge. It means going through a short list of the basics, such as how users log in, who can access what, where your secrets are kept, and how safe your dependencies are, and fixing what you find.

Do I need perfect security to launch?

No, and aiming for perfect is the wrong goal. Perfect security does not exist, and chasing it will stop you from ever launching. The right goal is to fix the common, serious weaknesses that real attackers actually use, and to be able to respond when something does go wrong. A good product that is released is better than a perfect one that exists only as an idea.

What are the most important things to check before launch?

Authentication, meaning how you confirm who a user is. Access control, meaning what each user is allowed to see and do. Secrets, meaning your passwords, keys, and tokens are not exposed. Dependencies, meaning the outside code you rely on has no known security flaws. And data handling, meaning sensitive information is protected while it is sent and while it is stored. These five cover most real problems.

What is the OWASP Top Ten?

It is a well-known, freely available list from OWASP, a nonprofit focused on software security, that names the most common and serious web application security risks. It is a practical starting point for a small team, because it shows you directly the problems attackers actually exploit most often, rather than rare, unusual cases.

What is broken access control?

It is when a user can see or do something they should not be allowed to, such as opening another user's data by changing an ID in the address bar. OWASP has ranked it among the top web application risks. It is common because it is easy to check that a user is logged in and forget to check that this particular user is allowed to access this particular item.

How should a small team handle secrets like API keys?

Keep them out of your code and out of your version history entirely. Store them in environment variables or a dedicated secrets manager, and make sure they are never printed in logs or sent to the browser. If a secret has ever been committed to your code history, treat it as exposed and replace it, because removing it later does not undo the exposure.

How do I keep my dependencies secure?

Most products are built on a lot of outside code, and that code sometimes has known security flaws. Use a tool that automatically scans your dependencies and warns you when one has a published vulnerability, and update the ones that do. This is one of the highest-value, lowest-effort things a small team can do.

When should I bring in a security specialist?

When the risk is high or the domain is sensitive: you handle payments, health or financial data, or large amounts of personal information, or you are in a regulated industry. A specialist is also worth it before a major launch that would be damaging to get wrong. The basics you can do yourself; an expert check in high-risk cases is worth paying for.

What data handling mistakes are most common?

Sending or storing sensitive data without protection, keeping more personal data than you actually need, and logging things you should not, like passwords or full card numbers. Protect sensitive data while it is sent and where it is stored, collect only what you need, and be careful what ends up in your logs, because logs are often less protected than databases.

Can we launch and improve security later?

You can and should keep improving after launch, but some things must be right before you go live: no exposed secrets, users cannot reach each other's data, and login works safely. Those cannot wait, because once real users and real data are in the product, a weakness there is a real security incident. The basics come first, then continuous improvement after.

How does Reveneau handle security in a build?

We add the security basics during the build rather than adding them in a hurry at the end, and we run a focused pre-launch review against a checklist of the common, serious risks. For products in high-risk or regulated areas, we bring in or recommend specialist review, because knowing the limits of a generalist check is part of doing it responsibly.