Introduction to software security
Security is a non-functional requirement of software engineering. Creating inherently secure applications is a fundamental, yet often unknown, skill for a good developer or software engineer.
A vulnerability is software is an unmet security specification. Bug-free software does not exist and not all bugs lead to vulnerabilities.
Even if a vulnerability exists, there may not be an exploit for it.
The key issues in secure designs are: