In this chapter, we started with looking at the details of a system architecture that builds in security. We went on to define secure coding, and looked at the philosophies and principles behind the practice of secure coding.
We then studied the different types of common security vulnerabilities encountered in software systems, such as buffer overflows, input validation issues, access control issues, cryptographic weaknesses, information leaks, insecure file operations, and so on.
We then went on to a detailed discussion on Python security issues with a lot of examples. We looked in detail at reading and evaluating input, overflow errors, and serialization issues. We then went on to look at the common vulnerabilities in Python web application frameworks with Flask being the candidate of choice. We saw how one can exploit the weaknesses on web application templates, and perform attacks such as SSTI, XSS, and DOS. We also saw multiple code examples of how to mitigate these attacks.
We...