Team Lead Mindset
A Security Mindset for Team Leads
A 30-minute threat model, supply-chain hygiene, secrets, access reviews, SECURITY.md and security in code review.
On this page
- Words used in this lesson
- The lead's job in security
- Threat modelling in 30 minutes
- Secure by default
- Dependencies and supply chain hygiene
- Secrets
- Access reviews and least privilege
- Incident response and disclosure policy
- Security in code review
- Training the team
- Try it
- Interview questions
- Key takeaways
- What's next
In one line: a lead does not need to be a security expert. A lead needs a habit of asking "what could go wrong, and who could do it?" early, choosing safe defaults, keeping dependencies and secrets under control, limiting who can do what, and having a plan for the day something goes wrong.
"Is this secure?" is a question a lead hears from managers, customers and interviewers. A weak answer is "we use HTTPS" or "the security team handles it". A good answer shows a routine: a short threat model before building, safe defaults, checks in review, regular access reviews, and a clear way to report and handle problems. This lesson gives that routine in simple steps.
Read Lesson 0 first for the answer shape. Dependencies are covered in Lesson 1; this lesson goes deeper on the security side. For the technical attacks and fixes see Full-Stack Lesson 31 (server-side security) and Browser Lesson 7 (the browser security checklist). For review habits see Lesson 3, and for incidents see Lesson 4 and Lesson 6.
Everything here is common practice and opinion. It is not legal, audit or compliance advice. Your company may have rules (and a security team) that come first.
What I checked. This series has no code to run in most lessons. Here I ran a few small npm commands, with Node v22.22.0 and npm 10.9.4 on this machine, and I show their real output below. I did not run the OpenSSF Scorecard tool itself. I read directly (raw text on GitHub): the README and docs/checks.md of ossf/scorecard (the check descriptions, risk levels and scoring text), and these pages of the OWASP CheatSheetSeries: Threat Modeling, Secrets Management, NPM Security, Vulnerable Dependency Management, Software Supply Chain Security, Authorization (the least-privilege part only) and Logging (only the short parts quoted here). I also read the Security section of charlax/engineering-management, which has three links only (a CTO security checklist, a Krebs post on security.txt, and a post about SOC 2). I did not open those three articles. I did not read GitHub's own documentation on SECURITY.md; what I say about it comes from the Scorecard check text. npm audit signatures failed in my environment (see below), so I cannot show a verified signature result. The 30-minute workshop plan, the checklists and sample wording are mine.
Words used in this lesson
- A threat is something that could harm the system, such as a person stealing a login token.
- A threat model is a short, structured look at a system to find what can go wrong and what to do about it.
- A trust boundary is a line where data moves between parts that trust each other differently, for example from the user's browser to your server.
- STRIDE is a memory aid for six kinds of threat: Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, and Elevation of privilege (explained below).
- Least privilege means giving each person or program only the access it needs, and nothing more.
- Secure by default means the safe choice is what you get if you do nothing.
- A secret is a credential: an API key, a password, a token, a private key.
- A supply chain is everything your software depends on and the way it is built and delivered: packages, build tools, CI, registries.
- Provenance is verifiable information about where and how an artifact was built.
- A vulnerability is a weakness that someone can use to cause harm. A CVE is a public ID for a known one.
- Disclosure is how a weakness is reported and made public. Responsible disclosure means the reporter and the owner agree on a fix before details are made public.
- SECURITY.md is a file in a repository that says how to report a vulnerability.
- An access review is a regular check of who has access to what, and removal of what is no longer needed.
The lead's job in security
You cannot review every line for security. Your job is to make the team's defaults safe and to make the right thing the easy thing. Four questions to keep in mind:
- What are we protecting? Customer data, money, accounts, uptime.
- Who could attack it, and how? Strangers on the internet, a bad dependency, a leaked key, a tired employee, a former employee.
- What stops them? Controls that are built in, not remembered.
- How will we know, and what will we do? Logs, alerts and a response plan.
The OWASP Threat Modeling page frames the same thing as four questions (from the Threat Modeling Manifesto): What are we working on? What can go wrong? What are we going to do about it? Did we do a good enough job? I read this directly.
Threat modelling in 30 minutes
OWASP's cheat sheet says threat modeling is "a structured, repeatable process", ideally done early (such as in design) and kept up to date, not done once. It also says there is "no universally accepted industry standard", and that the data flow diagram is the most common way to model a system. A short session can follow those four questions. This plan is my own:
| Minutes | Step | Output |
|---|---|---|
| 0 to 5 | What are we working on? Draw the feature on a whiteboard: users, your services, data stores, third parties. Draw a dashed line at each trust boundary | A simple data flow diagram |
| 5 to 20 | What can go wrong? Walk each arrow and box with the six STRIDE prompts | A list of threats |
| 20 to 27 | What will we do? For each important threat choose: mitigate, eliminate, transfer or accept | An action list with owners |
| 27 to 30 | Did we do enough? Ask what we missed, and who should review | Next steps and a date to revisit |
STRIDE, as the cheat sheet gives it
I read this table in the OWASP Threat Modeling cheat sheet. It says STRIDE was originally developed by Microsoft employees.
| Letter | Threat | What it breaks | Example in the cheat sheet |
|---|---|---|---|
| S | Spoofing | Authentication | An attacker steals a user's token and pretends to be them |
| T | Tampering | Integrity | An attacker makes the app change the database in a way it should not |
| R | Repudiation | Accounting | An attacker changes logs to hide what they did |
| I | Information disclosure | Confidentiality | An attacker reads user account data from a database |
| D | Denial of service | Availability | An attacker locks a user out by making many failed logins |
| E | Elevation of privilege | Authorization | An attacker changes a JWT to change their role |
A tiny example (invented for this lesson): a "password reset by email link" feature.
| Part | STRIDE prompt | Possible threat | Possible response |
|---|---|---|---|
| Reset link | Spoofing | Someone guesses or reuses a link | Long random token, one use, short expiry |
| Reset form | Tampering | Someone changes the user ID in the request | Take the user from the token on the server, not from the form |
| Email page | Information disclosure | The page says "no such account" and reveals which emails are registered | Same message for all cases |
| Reset endpoint | Denial of service | Attacker triggers thousands of emails to a victim | Rate limits per account and per address |
| Audit | Repudiation | No record of who reset what | Log reset requests and completions |
| Admin tool | Elevation | A support agent can reset any account without a trace | Limit the role, require a reason, log it |
The cheat sheet lists four possible responses to a threat (credited to Adam Shostack): mitigate (reduce the chance), eliminate (remove the feature), transfer (give contractual or financial responsibility to someone else; it does not itself reduce the chance) and accept (decide to live with it, and write down why).
Other points from the cheat sheet that matter to a lead:
- Rank, but do not pretend it is exact. Ranking is often likelihood times impact, but both are hard to calculate.
- Do not add techniques only to look thorough. The cheat sheet also names other methods (attack trees, misuse cases, LINDDUN for privacy, PASTA, OCTAVE, VAST) and says to state why each technique fits.
- Developers often lack security training, and the cheat sheet suggests inviting a security person to the session and keeping training regular.
- Review with everyone, not only developers. Product and operations know things you do not.
A threat model that sits in a drawer is not security. Turn the result into tickets with owners, and put the diagram next to the design doc (Lesson 5). Revisit it when the design changes.
Secure by default
A good default beats a good reminder. Ideas, mostly from the cheat sheets I read, in a lead's language:
- Make the safe path the easy path. A project template that already has the secure settings is better than a wiki page that explains them.
- Deny by default. New endpoints require login and a permission check unless someone says otherwise on purpose. (This is my own rule of thumb. The Authorization cheat sheet has a section on enforcing least privilege, which is related.)
- Use well-known libraries and frameworks for hard things (login, sessions, crypto). Do not invent your own.
- Validate input and encode output. The attacks and fixes are in Full-Stack Lesson 31 and Browser Lesson 7.
- Turn on the protections your platform offers. Branch protection, required reviews, two-factor login, automatic dependency alerts.
- Reduce the attack surface. Remove features and endpoints that nobody uses. An unused admin page is a risk with no benefit. This matches "eliminate" in the threat responses.
- Make danger visible. A flag named
allowAnyOriginshows its own risk. A flag namedfasthides it.
Dependencies and supply chain hygiene
Lesson 1 covered how to choose a package. Security adds the question: how do we stop a bad or broken package from reaching production? The OWASP Software Supply Chain Security cheat sheet has sections on source code threats (peer reviews, secure config of version control), dependency threats (assess suppliers, monitor dependencies, lockfiles and pinning), build threats (harden build tools, code signing, provenance, isolated builds) and deployment threats. I read it directly. The npm cheat sheet adds practical steps.
Habits for a Node team
Each of these appears in the OWASP npm cheat sheet unless I say otherwise:
- Enforce the lockfile. Use
npm ciin CI and builds, so the installed versions are exactly the ones inpackage-lock.jsonand any mismatch stops the install. - Consider ignoring install scripts.
--ignore-scripts(orignore-scripts=truein.npmrc) stops third-party packages from running scripts when installed. Allow only the packages that truly need them. - Audit dependencies.
npm auditchecks for known vulnerabilities. Run it in CI. - Automate updates. The Scorecard check Dependency-Update-Tool looks for Dependabot or Renovate, and describes the risk of old dependencies as
High. - Beware of fake names. The cheat sheet describes typosquatting (a malicious package with a name like a popular one) and slopsquatting (a package name that an AI assistant invented, which an attacker may then publish). Check that any new package exists and has real history before installing it.
- Use two-factor login and short-lived tokens for publishing. The cheat sheet recommends trusted publishing (short-lived, workflow-specific credentials from your CI), which also produces provenance automatically.
Let me show a few of these for real. This is a throwaway project in a scratch folder.
npm init -ynpm install semver --ignore-scriptsadded 1 package, and audited 2 packages in 547msfound 0 vulnerabilitiesEnforcing the lockfile. I changed the wanted range in package.json from ^7.8.5 to ^6.0.0 without updating the lockfile, then ran npm ci:
npm ci --ignore-scriptsnpm error code EUSAGEnpm errornpm error `npm ci` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.npm errornpm error Invalid: lock file's semver@7.8.5 does not satisfy semver@6.3.1That is the point: the build stops instead of quietly installing something different.
Check that a package exists (against slopsquatting). I tried a name the cheat sheet gives as an example of an AI-invented one:
npm view node-fetch-promise namenpm error code E404npm error 404 Not Found - GET https://registry.npmjs.org/node-fetch-promise - Not foundnpm error 404npm error 404 'node-fetch-promise@*' is not in this registry.At the time I ran it, that name was not in the registry. This can change: anyone could publish a package with that name later. So a missing name is a warning, and an existing name is not proof of safety. Check the repository, the history and the maintainers as well.
Provenance. npm can show whether a published version carries a build provenance statement:
npm view semver dist.attestations{ url: 'https://registry.npmjs.org/-/npm/v1/attestations/semver@7.8.5', provenance: { predicateType: 'https://slsa.dev/provenance/v1' }}This shows that the registry holds a provenance attestation for that version (an SLSA provenance statement, as the type URL says). It does not by itself prove the package is safe. It says where and how the package was built. The next command is meant to check signatures for the whole project:
npm audit signaturesnpm error Failed to downloadIt failed in my sandbox, so I cannot show you a verified result. It may need access to a signing-key endpoint that my network blocks. I am not claiming a reason, only that I did not get a result. Run it on your own machine and read what it says.
OpenSSF Scorecard
OpenSSF Scorecard is a project that runs automatic checks on a repository and gives a score. In Lesson 1 we used it to judge outside packages. A lead can also use it on their own repositories as a free checklist. I read the check descriptions directly. A few that matter to a team (risk levels as the document states them):
| Check | What it looks at (from the docs) | Risk in the docs |
|---|---|---|
| Branch-Protection | Whether the default and release branches use protection rules, such as required review or status checks | High |
| Dependency-Update-Tool | Whether Dependabot or Renovate is enabled | High |
| Pinned-Dependencies | Whether build and release dependencies are pinned to a specific hash, not a mutable version or range | Medium |
| Token-Permissions | Whether automation tokens follow least privilege (read-only at the top, write only where needed) | High |
| Security-Policy | Whether there is a SECURITY.md and what it contains | Medium |
| Signed-Releases | Whether release artifacts are cryptographically signed (the check does not verify the signatures) | High |
| Vulnerabilities | Whether there are open known vulnerabilities in the code or dependencies, using the OSV service | High |
Two details I find useful:
- Token-Permissions says the best setup is read-only permissions at the top of each workflow file, with write permissions declared only on the job that needs them. It gives examples of what an attacker could do with broad write access, such as changing the result of required checks.
- Branch-Protection notes that some settings need an admin token to be read, so a score from outside may undercount. Scores are a signal, not a verdict.
A score is not security. A project can have a high score and still have a bad design, and a low score may come from a check that does not fit your setup (the docs say several checks are limited to repositories hosted on GitHub). Use Scorecard to find easy gaps, not to rank people.
Secrets
Many incidents start with a secret in the wrong place. The OWASP Secrets Management cheat sheet starts by saying that many organisations have secrets hardcoded in source code or scattered through configuration files. What I take from it for a team (the cheat sheet is long; I read the headings and the parts quoted here):
- Centralise and control. Keep secrets in one managed place with access control, not in code, tickets or chat.
- Apply least privilege to the secret store too. The cheat sheet says engineers should not have access to all secrets.
- Audit. At minimum: who asked for a secret, whether it was approved, when it was used, when it expired, failed access attempts, and who changed it.
- Plan the life of a secret. Creation, rotation, revocation and expiry each have a section. A secret that can never change is a long-term risk.
- Prefer short-lived credentials. The npm cheat sheet says long-lived tokens "can be compromised, accidentally exposed in logs, or require manual rotation", and recommends short-lived ones.
- Do not log secrets. The Logging cheat sheet has a list of data that should not be logged (sensitive personal data, commercially sensitive information and more).
A lead's small rules (my own):
- Scan for secrets before they reach the main branch. Use your platform's secret scanning or a pre-commit tool.
- If a secret leaks, rotate it first, then investigate. Deleting the commit does not help, because it may already be copied.
- Separate secrets per environment and per service. The cheat sheet notes that when services share the same secret it is hard to find the source of a leak.
- Know where each secret lives and who owns it. A short list is enough.
Access reviews and least privilege
Least privilege means each person and each program gets only what they need. The Authorization cheat sheet says it is easier to grant extra permission later than to take it away, so plan this early.
An access review is a calendar event, not a project. A simple version (my own):
- Every quarter, list access to the places that matter: source repositories, cloud accounts, production data, CI/CD, secret stores, monitoring and admin tools.
- For each person, ask: do they still need this for their current work?
- Remove what is not needed. Remember contractors, interns and people who changed team.
- Check service accounts and tokens too. Who owns them? When do they expire?
- Check the leaving process. When someone leaves, who removes access and how quickly?
- Write down the result and keep it. Auditors and your future self will want it.
Rules that help:
- Give access to groups and roles, not individuals, so that it is easy to review.
- Make production access rare and logged. Not everyone needs write access to production data every day.
- Separate duties for the riskiest actions (for example, a second person approves a production database change).
- Break-glass access for emergencies should be possible, but loud: logged and reviewed afterwards.
Incident response and disclosure policy
Things will go wrong. Lesson 4 and Lesson 6 cover incidents and blameless learning. Security adds two points: someone outside may find the problem first, and some information must not be public yet.
Have a SECURITY.md
The Scorecard Security-Policy check looks for a file named SECURITY.md (case-insensitive) and says it can tell users "what constitutes a vulnerability and how to report one securely so that information about a bug is not publicly visible". The check awards points for a valid contact (an email address or a link for reporting), free-form text beyond that, and for describing the process and disclosure timelines. This is what I read in the check text. A small outline (my own):
# Security policy## Reporting a vulnerabilityPlease do not open a public issue. Email security@example.com(or use the "Report a vulnerability" form), and include steps to reproduce.## What to expect- We will acknowledge your report within 3 working days.- We will keep you updated and aim to fix serious issues within 30 days.- We will credit you in the release notes if you wish.## Supported versionsOnly the latest major version receives security fixes.The email and the time promises above are placeholders. Only promise what your team can do. A silent inbox is worse than no policy.
The charlax list also links an article on security.txt (a small file at a known web address that tells researchers how to contact you). I did not read it, so I only know it from its title.
Responsible disclosure
The OWASP Vulnerable Dependency Management cheat sheet describes two ways a researcher may report a weakness:
- Responsible disclosure: the researcher works with the owner, and a CVE is issued so the problem has a public ID. The cheat sheet says that if the researcher gets no reply in 30 days, they often go on to full disclosure.
- Full disclosure: the researcher publishes all the details, sometimes including an exploit.
That 30-day figure is how the cheat sheet describes common practice, not a law. The lesson for a lead: answer reports quickly, and have someone named who reads the inbox.
A simple security incident routine (my own)
- Name an incident lead and open one place for notes.
- Contain first. Revoke the key, disable the account, roll back the release.
- Preserve evidence. Keep logs, and do not wipe what you need to learn from.
- Tell the right people. Your manager, the security or legal contact, and, where the law requires, customers or authorities. The rules differ by country, so involve the people who know.
- Fix the cause, not just the symptom.
- Write a blameless review and make the follow-ups tickets with owners.
Legal duties after a data breach differ by country, industry and contract. Do not decide alone. Involve your manager, legal and security people early.
Security in code review
You do not need a separate security process for everything. Add a few questions to the review habit from Lesson 3:
| Question | Why |
|---|---|
| Who can call this? Is there a login and a permission check? | Missing authorization is common |
| Where does this data come from? Is it checked? | Untrusted input is the root of many attacks (Full-Stack Lesson 31) |
| What does this log or return? Any secrets or personal data? | Information disclosure |
| Does this add a dependency or a new permission? | Supply chain and least privilege |
| What happens if this is called a thousand times? | Abuse and denial of service |
| Can we roll this back? | Safe change |
The OWASP supply chain cheat sheet lists peer review as a relatively low-cost technique that deters and detects problems, and says it should happen before code is merged. Two lead habits:
- Mark security comments clearly (for example "Security:") so they are not mistaken for taste.
- Require review from a second person for risky areas (authentication, payments, permissions, CI configuration). Branch protection makes it automatic.
Training the team
The OWASP Threat Modeling cheat sheet says developers often lack security knowledge and recommends regular, tailored training and involving security people. In practice (my own suggestions):
- Use your own code. A one-hour session on a real bug from your repository teaches more than a generic video.
- Run a small threat modelling session for every big feature, and rotate who draws the diagram.
- Read one public incident per month. The danluu/post-mortems list (see Lesson 6) has many, including security-related ones. Ask: which control would have stopped this in our system?
- Keep a short checklist next to the pull request template, and update it when something slips through.
- Reward early reports. If a person says "I think I leaked a key", thank them. People hide mistakes if they are punished (see psychological safety in Lesson 8).
- Name a security champion in the team: someone with extra interest who connects to the security team. Rotate it.
Try it
STRIDE the login. Pick one STRIDE letter and name a threat to your own login page. Answer: For example, Spoofing: someone reuses a stolen session token. Response: short session life, rotate tokens on login, detect a use from a new place. Or Denial of service: many failed logins lock a real user out. Response: slow down by IP and by account without locking forever.
Lockfile. What should CI run instead of
npm install, and why? Answer:npm ci, because it installs exactly what the lockfile says and stops ifpackage.jsonand the lockfile disagree (as in the output above).A leaked key. A developer pushes an API key to a public repository and deletes it in the next commit. Is the problem over? Answer: No. The key may already be copied and is still in the history. Rotate the key first, then check where it was used, then add scanning so it does not happen again.
Access review. Write three questions you would ask in a quarterly review. Answer: Who still has production access, and do they need it? Which service accounts and tokens exist, and who owns them? Did every person who left this quarter lose access, and when?
Interview questions
How do you build security into your team's work? (Must know)
I make safe defaults the easy path and add small, regular habits. Before big features we do a short threat model, 30 minutes with a whiteboard. In code review we ask who can call this, where the data comes from and what is logged. We use a locked dependency install in CI, automatic dependency updates, secret scanning and branch protection. We review access every quarter and we have a clear way to report and handle a vulnerability. I do not claim to be the security expert; I involve the security team and keep the team trained.
How do you do a threat model? (Must know)
I use four questions: what are we working on, what can go wrong, what will we do about it, did we do enough. I draw the data flow with trust boundaries, walk through each part using STRIDE prompts, then choose a response for each real threat: mitigate, eliminate, transfer or accept. I write the actions as tickets with owners and revisit the model when the design changes. In 30 minutes I can cover one feature. I also say that STRIDE is one technique among several, and it fits technical designs best.
What is least privilege and how do you apply it? (Must know)
It means each person or program has only the access it needs. I apply it by giving access through roles and groups, keeping production access rare and logged, using read-only tokens by default (for example read-only workflow permissions with write only on the job that needs it), and reviewing access each quarter to remove what is no longer needed. It is much easier to give a permission later than to take one away, so I start narrow.
A developer commits a secret. What do you do? (Must know)
First rotate or revoke the secret, because deleting the commit does not undo the exposure. Then I check where it could have been used, using logs, and tell the people who need to know. I find out how it happened without blaming the person, and fix the process: secret scanning before merge, a better way to load secrets, and a short training note. I also thank the person who reported it, so others report early.
How do you protect the team from malicious or vulnerable dependencies? (Senior signal)
I use a locked install in CI (npm ci) so the versions cannot drift, run npm audit and an update tool such as Dependabot or Renovate, and review new dependencies using the questions from the package lesson. I consider ignoring install scripts by default. For new or AI-suggested package names I check that the package exists, has real history and a real repository, because typosquatting and invented names are known attacks. For packages we publish, I use short-lived credentials from CI and provenance. I know that a score or a provenance badge is a signal, not proof of safety.
What is provenance and why does it matter? (Senior signal)
Provenance is verifiable information about where, when and how an artifact was built. It matters because it helps you check that what you install came from the source you expected and was not changed on the way. On npm, a published version can carry a provenance statement, and I can see its presence with npm view <package> dist.attestations. But provenance says how it was built, not that the code is good. I still review the dependency and keep my other controls.
What is in your vulnerability disclosure policy? (Senior signal)
A SECURITY.md that says how to report privately, with a real email or form, what to include, what response time we promise, and which versions get fixes. I only promise what we can do, and I make sure someone owns the inbox. I do not ask people to report in public issues. For researchers, I acknowledge quickly, keep them updated and credit them if they want. The cheat sheet I read notes that reporters often move to full disclosure if they get no reply in about 30 days, so silence has a cost.
How would you use OpenSSF Scorecard? (Senior signal)
I would run it on our own repositories as a free checklist for easy gaps: branch protection, dependency update tool, token permissions, pinned dependencies and a security policy. I would fix the cheap, high-risk ones first. I would not use the number to compare people or teams, because some checks do not fit every setup and some settings cannot be read without admin access. It tells me where to look, not whether we are safe.
How do you add security without slowing the team down? (Trap)
The trap is "more gates". I move checks to where they are cheap: templates with safe defaults, automatic scanning in CI, branch rules, and a short checklist in review. I save heavy reviews, like a full threat model, for risky features, such as new authentication or payments. I measure friction: if a check blocks people often and finds little, I fix or remove it. And I keep the security team in the loop early, so they are partners and not a final gate.
A customer asks if your product is secure. What do you say? (Trap)
I do not say "yes, fully". I describe what we do: threat modelling for new features, reviews for risky areas, locked dependencies and updates, secret management, least privilege and quarterly access reviews, a reporting channel, and an incident plan. I say what we do not claim, and I offer documents we can share. I do not invent certifications or numbers. If I am unsure about something, I check with the security or legal people before answering.
Key takeaways
- A lead's security job is safe defaults, small habits and a clear plan, not knowing every attack.
- A 30-minute threat model: draw it, walk it with STRIDE, choose mitigate, eliminate, transfer or accept, and make tickets.
- Use
npm ci, audits, update tools and care with new package names. Provenance says how something was built, not that it is safe. - OpenSSF Scorecard is a useful free checklist for your own repositories. A score is a signal, not proof.
- Keep secrets out of code, give them owners, rotate them, and rotate first when they leak.
- Review access every quarter. Give the least access that works.
- Have a
SECURITY.mdyou can honour, and a routine for incidents. Involve legal and security early. - Add a few security questions to code review. Train with your own code and reward early reports.
- I read the OWASP and Scorecard pages directly, ran a few small npm commands (one of them failed), did not run Scorecard, and know the three charlax security links only by title. Adapt this to your company.
What's next
Next: Rules for AI-assisted coding on a team, Lesson 15. Practise: run a 30-minute threat model on the next feature you build, with the team at a whiteboard, and turn the top three threats into tickets with owners.
Published by Jainik · Last updated · How these lessons are made
Keep learning
Related lessons
- Dependencies and the Supply Chain: npm, Lockfiles and GitHub Actions · Security for Developers
- Securing LLM Applications: The OWASP Top 10 for LLM Apps in Code · AI Engineering
- Prompt Injection and Safe Tool Use for Agents · AI Engineering
Part of the study guide
Related series