As already stated, this tutorial is in no way comprehensive. In fact, no such source exists due to the ever-changing landscape of software security. The best protection against continually evolving attackers is to stay current by regularly reading about new security threats. For several excellent sources that examine in depth why vulnerabilities occur and what can be done to prevent them, see Resources. Remember, just as a system cannot be declared bug free, it cannot be deemed completely secure.