14.1. General Server Risks14.2. Security by Design14.2.1. Maintain a security mindset14.2.1.1. Risk-based security controls14.2.1.2. Defense in depth14.2.1.3. Keep it simple (and secure)14.2.1.4. Respect the adversary14.2.1.5. Security awareness14.2.1.6. Business impact14.2.2. Establishing a secure development environment14.2.2.1. Management14.2.2.2. Configuration Control Board14.2.2.3. Network support for development14.2.3. Secure development practices14.2.3.1. Handling data14.2.3.2. Keeping code clean14.2.3.3. Choosing the language14.2.3.4. Input validation and content injection14.2.3.4.1. Cross-site scripting14.2.3.4.2. SQL injection14.2.3.4.3. Stored procedures14.2.3.4.4. Dynamic scripting14.2.3.4.5. Screen for all unusual input14.2.3.5. Use encryption14.2.4. Test, test, test14.3. Operating Servers Safely14.3.1. Controlling the server configuration14.3.1.1. Physical security of the system14.3.1.2. Minimizing services14.3.1.3. System backups14.3.2. Controlling users and access14.3.3. Passwords14.3.4. Monitoring, auditing, and logging14.4. Server Applications14.4.1. Data sharing14.4.1.1. FTP servers14.4.1.2. LDAP14.4.2. Peer to peer14.4.3. Instant messaging and chat14.5. Multi-Level Security and Digital Rights Management14.5.1. Background14.5.2. The challenges of information control14.5.3. Building systems for information control14.6. Summary