Summary
This chapter introduces the concepts behind database security. We started out by looking at how our applications communicate with databases via SQL. Next, we looked at attacks against this code. We followed this with several essential discussions around correctness and concurrency in databases. Correctness and proper concurrency structure help to protect the data from malicious users and natural issues. We looked at the tools available for different programming languages, how role-based security works in databases, and how we can use encryption to protect the confidentiality of our data. In the next chapter, we begin our journey into software testing and validation.