Technical requirementsChecking the code securitySecurity-conscious designMaking interfaces easy to use and hard to misuseEnabling automatic resource managementDrawbacks of concurrency and how to deal with itSecure coding, the guidelines, and GSLDefensive coding, validating everythingThe most common vulnerabilitiesChecking whether the dependencies are secureCommon Vulnerabilities and ExposuresAutomated scannersAutomated dependency upgrade managementHardening your codeSecurity-oriented memory allocatorAutomated checksCompiler warningsStatic analysisDynamic analysisValgrind and Application VerifierSanitizersFuzz-testingProcess isolation and sandboxingHardening your environmentStatic versus dynamic linkingAddress space layout randomizationDevSecOpsSummaryQuestionsFurther reading