The Modern .NET Show

The Security Expert Speaks: Tanya Janca on Learning to Code Securely

The Modern .NET Show

Show Notes

RJJ Software's Software Development Service This episode of The Modern .NET Show is supported, in part, by RJJ Software's Podcasting Services, whether your company is looking to elevate its UK operations or reshape its US strategy, we can provide tailored solutions that exceed expectations. Show Notes "From the very first lesson of "Hello, World" they teach us to make insecure code. So the first thing with "Hello, World" is how to output to the screen. That is fine. But the second part of "Hello, World" is: you ask them their name, you take their name. you don't validate it, and then you say "Hello," and you reflect their name back onto the screen with no output encoding. And then you just made cross-site scripting. And right from the very first lesson, we teach everyone wrong in pretty much every language, and so as a result we end up with a lot of people doing code the wrong way. Like, universities are still teaching lots of things wrong. And so I'm hoping that this book will help."— Tanya Janca Welcome friends to The Modern .NET Show; the premier .NET podcast, focusing entirely on the knowledge, tools, and frameworks that all .NET developers should have in their toolbox. We are the go-to podcast for .NET developers worldwide, and I am not your host: Jamie. I'm Delilah and I will be recording the intro for this episode because Jamie's throat infection returned, making it tough for him to record this intro. In this episode, we welcomed Tanya Janca back to the show. This conversation marks her third appearance on the show, and a slight change in focus to Secure Coding. We talk about how developers are taught to write insecure code from day one (or "Hello, World!"), about how her new book "Alice and Bob Learn Secure Coding" could help with that, the many hours of free education and learning that Tanya has created alongside the book, and how both data scientists and academics approach software development differently to some of us developers. "There are so many amazing security features in .NET. There's so many. Like, because I... I wrote about eight different frameworks and .NET by far had the absolute most different security features. And part of it, some of them are from Windows. Some of them are from C... because I wrote about C# and .NET. And to be quite honest, audience, I mixed them up quite a bit because, "what is specifically C#, and what is specifically .NET," got a bit confused in my brain. But I'm like, all of it's good. Do all of it"— Tanya Janca Anyway, without further ado, let's sit back, open up a terminal, type in `dotnet new podcast` and we'll dive into the core of Modern .NET. My voice was created using Generative AI. Supporting the Show If you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show. Full Show Notes The full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-7/the-security-expert-speaks-tanya-janca-on-learning-to-code-securely/ Tanya's Previous Appearances: Episode 77 - Application Security with Tanya Janca Episode 105 - More Application Securuty with Tanya Janca Useful Links Tanya's books Tanya's newsletter Hello, World Don't Accept The Defaults Semgrep Okta Pushing Left, Like a Boss: Part 1 Owasp DAST (Dynamic Application Security Testing) SAST (Static Application Security Testing) Semgrep Academy (previously known as WeHackPurple Academy) Application Security Foundations Level 1 Owasp Juice Shop OwaspHeaders.Core Owasp Top Ten Content-Security-Policy Trusted Types Jason Haddix Retrieval-Augmented Generation (aka RAG) Posting Malicious Code as an Answer Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in T

More from The Modern .NET Show

Oct 9, 2026

Show Notes Hey everyone, and welcome back to The Modern .NET Show; the premier .NET podcast, focusing entirely on the knowledge, tools, and frameworks that all .NET developers should have in their toolbox. I'm your host Jamie Taylor, bringing you conversations with the brightest minds in the .NET ecosystem. Today's episode is another one without a guest; it's just me again. This is part two of the series I started at the top of the season, Bridging the Gap, and if you're wondering where part two got to, we had a standard episode in between. That'll keep happening. The series numbers and the season numbers are going to drift apart, and I'll say which part we're on every time so nobody has to do arithmetic.. Anyway, without further ado, let's sit back, open up a terminal, type in `dotnet new podcast` and we'll dive into the core of Modern .NET. Full Show Notes The full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-9/you-might-not-need-to-upgrade-the-case-for-staying-put/ Useful Links: This series Bridging the Gap: Taking It Upstairs, every episode's business case on one page s09e01 - You Are Not Behind: Why You Are Still On .NET Framework, part 1 of Bridging the Gap

Sep 25, 2026

Show Notes Hey everyone, and welcome back to The Modern .NET Show; the premier .NET podcast, focusing entirely on the knowledge, tools, and frameworks that all .NET developers should have in their toolbox. I'm your host Jamie Taylor, bringing you conversations with the brightest minds in the .NET ecosystem. Today's episode was recorded shortly before the annual mid-year hiatus, and was recorded live at Codegarden. Codegarden is Umbraco's main conference, and I was invited by the folks over at Candid Contributions to record a collaboration episode on one of the stages. We sat down to discuss the topic of AI-based contributions to open source, the opinions of everyone present, what the Umbraco leadership team (which Emma is a part of) throught of them, and the (then) recent news that rsync's developer had come under fire for using AI. Along the way, we took questions from the audience and the recording ends with a rather spicy opinion from me; so keep an ear open for that. I'm very grateful to Emma, Lotte, Carole, and Laura for asking me to collaborte with them on this episode. I'd also like to thank everyone on the Umbraco team for organising everything and allowing me to be part of Codegarden. One thing to note is that Carole's mic wasn't working in the openning minutes. Podcast editor superstar Matt has done what he can to clean the audio up, and Carole's mic got replaced at the three minute mark, but it's worth knowing that going in. Anyway, without further ado, let's sit back, open up a terminal, type in `dotnet new podcast` and we'll dive into the core of Modern .NET. Full Show Notes The full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-9/its-still-your-code-ai-contributions-to-open-source-live-at-codegarden/ Useful Links: Codegarden and Candid Contributions Codegarden programme Candid Contributions

Sep 11, 2026

Show Notes Hey everyone, and welcome back to The Modern .NET Show; the premier .NET podcast, focusing entirely on the knowledge, tools, and frameworks that all .NET developers should have in their toolbox. I'm your host Jamie Taylor, bringing you conversations with the brightest minds in the .NET ecosystem. Today's episode is a little different from the norm. There's no guest; it's just me. And it's the first episode of season nine, and the first episode of a series that I have apparently been meaning to make for about seven years without ever noticing that I was meaning to make it. Anyway, without further ado, let's sit back, open up a terminal, type in `dotnet new podcast` and we'll dive into the core of Modern .NET. Full Show Notes The full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-9/you-are-not-behind-why-you-are-still-on-net-framework/ Useful Links: This series Bridging the Gap: Taking It Upstairs, every episode's business case on one page

Jul 24, 2026

Strategic Technology Consultation Services This episode of The Modern .NET Show is supported, in part, by RJJ Software's Strategic Technology Consultation Services. If you're an SME (Small to Medium Enterprise) leader wondering why your technology investments aren't delivering, or you're facing critical decisions about AI, modernization, or team productivity, let's talk. Show Notes "In the agentic world that makes a lot of people really uncomfortable because what ends up happening is the agent has it, the agent has its own ID and then interacts with your data database."— Jerry Nixon Hey everyone, and welcome back to The Modern .NET Show; the premier .NET podcast, focusing entirely on the knowledge, tools, and frameworks that all .NET developers should have in their toolbox. I'm your host Jamie Taylor, bringing you conversations with the brightest minds in the .NET ecosystem. Today, Jerry Nixon returned to the show to talk about SQL MCP Server, something of a new product _and_ the evolution of Data API Builder; which we talked to Jerry about back in episode three of this season (there'll be a link in the show notes). Jerry does a much better job of introducing it than I can, but suffice it to say that SQL MCP Server is an MCP Server which abstracts away intracting with a SQL database... of almost any flavour. SQL Server, CosmosDB, Postgres, you name it. "I mean there is nothing better for any agent than saying "new session." That is how you like create better answers all the time. You might feel like you have this session, you've been training it so long and you've told it so much, it has so much context that now when you ask it, it'll finally have the answer that you're looking for."— Jerry Nixon Along the way, Jerry shared a lot of solid gold nuggets of advice about MCP servers, best practices for interacting with agents and models, and even context management. And, of course, we talk about how simple is almost always the best solution (and how SQL MCP Server might be one of the ways for you to achieve that). Before we jump in, a quick reminder: if The Modern .NET Show has become part of your learning journey, please consider supporting us through Patreon or Buy Me A Coffee. Every contribution helps us continue bringing you these in-depth conversations with industry experts. You'll find all the links in the show notes. So let's sit back, open up a terminal, type in `dotnet new podcast` and we'll dive into the core of Modern .NET. Full Show Notes The full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-8/giving-ai-agents-safe-access-to-your-data-sql-mcp-server-with-jerry-nixon/ Useful Links: Data API Builder & SQL MCP Serverdocumentation Data API Builder on GitHub Book time with Jerry to discuss SQL MCP an your projects Agentic Design Patterns by Antonia Gulli Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in Touch: Via the contact page Joining the Discord Remember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend. And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch. You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast. Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET Show. Editing and post-production services for this episode were provided by MB Podcast Services.

Jul 10, 2026

Strategic Technology Consultation Services This episode of The Modern .NET Show is supported, in part, by RJJ Software's Strategic Technology Consultation Services. If you're an SME (Small to Medium Enterprise) leader wondering why your technology investments aren't delivering, or you're facing critical decisions about AI, modernization, or team productivity, let's talk. Show Notes Hey everyone, and welcome back to The Modern .NET Show; the premier .NET podcast, focusing entirely on the knowledge, tools, and frameworks that all .NET developers should have in their toolbox. I'm your host Jamie Taylor, bringing you conversations with the brightest minds in the .NET ecosystem. Today's episode is a little different from the norm. I waned to, temporarily, take you away from the "AI is the best thing ever/worst thing ever" news cycle, and talk to you about an open source project that I work on called "OwaspHeaders.Core" This is the second in a two-part series about OwaspHeaders.Core and focusses on providing a timeline of the evolution of the package; but this isn't going to a be all about how great I am. I'm going to cover the lessons I learned, the choices I made, and the help that I had from the community. Before we jump in, a quick reminder: if The Modern .NET Show has become part of your learning journey, please consider supporting us through Patreon or Buy Me A Coffee. Every contribution helps us continue bringing you these in-depth conversations with industry experts. You'll find all the links in the show notes. Anyway, without further ado, let's sit back, open up a terminal, type in `dotnet new podcast` and we'll dive into the core of Modern .NET. Full Show Notes The full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-8/from-pentest-to-1-7-million-downloads-part-2-the-lessons-nobody-ever-taught-me/ Useful Links: OwaspHeaders.Core NuGet package GitHub repository Documentation Contributors graph Scott Harden's PR #96 mkokabi's derivative for Azure Isolated Functions

See all episodes →