Welcome back. On one system, there was a program that transmitted strings to other systems, that system would then execute what was sent as commands. This program carefully examined the string sent to the other system to eliminate a set of metacharacters that would create security problems on the remote system. When the system was updated, two new metacharacters were created. But the set of metacharacters that the program checked remain the same, thus the security check failed. The problem was that the design of the program violated a basic design principle, check for what is allowed, not what is disallowed. In this module, we're going to examine eight design principles that govern secure programming. These principles are ubiquitous in the security world, and knowing them will help you both in the design and implementation of your programs, and then understanding security in general. At the end of this lesson, you will be able to explain eight design principles that govern Secure Programming, and apply these design principles to code situations. Let's get started.