How to keep websites secure: Threats and Dealing with Vulnerabilities