Roadmap › Clean Code, Testing & Best Practices › Module: Team Practices
Lessons in this course (12)

12. Secure coding basics (OWASP Top 10 for .NET devs)

Intermediate★ Must knowLesson 12 of 12
Risk.NET practice
Injection (SQL, command)Parameterised queries / EF Core / Dapper parameters; never concatenate input
Broken access control[Authorize] + policies; check ownership (order.UserId == currentUser) — prevent IDOR
Cryptographic failuresHTTPS everywhere, HSTS; hash passwords with ASP.NET Core Identity (PBKDF2); never roll your own crypto
Security misconfigurationNo detailed errors in production; remove default accounts; least privilege
Vulnerable componentsKeep NuGet packages updated; Dependabot; dotnet list package --vulnerable
XSSRazor encodes by default; avoid Html.Raw with user input; CSP header
CSRFAntiforgery tokens for cookie-auth forms ([ValidateAntiForgeryToken])
SecretsUser Secrets locally; Azure Key Vault / env vars in prod; never commit appsettings.Production.json secrets
Logging failuresLog security events; never log secrets
SSRFValidate/allow-list outbound URLs