The great news is that much of what you already do as a software tester helps with security testing! In this post, I will outline the ways that testers can use the skills they already have to start testing with security in mind, and I will discuss the new skills that testers can learn to help secure their applications.
Things you are probably already testing:
- Field Validation: It's important to make sure that fields only accept the data types they are expecting, and that the number and type of characters is enforced. This helps ensure that SQL injection and cross-site scripting can't be entered through a data field.
- Authentication: Everyone knows that it's important to test the login page of an application. You are probably already testing to make sure that when login fails, the UI doesn't provide any hints as to whether the username or password failed, and testing to make sure that the password isn't saved after logout or displayed in clear text. This serves to make it more difficult for a malicious user to figure out how to log in.
- Authorization: You are already paying attention to which user roles have access to which pages. By verifying that only authorized users can view specific pages, you are helping to insure that data does not fall into the wrong hands.
Things you can learn for more comprehensive security testing:
- Intercepting and Manipulating Requests: It is easy to intercept web requests with free tools that are available to everyone online. If attackers are doing this (and they are), then it is important for you to insure that they can't get access to information that they shouldn't have.
- Cross-site Scripting (XSS): This involves entering scripted code that will be executed when someone navigates to a page or retrieves data. Any text field on a page, even any URL, represents a potential attack point for a malicious user to insert a script.
- SQL Injection: This is exploiting potential security holes in communication with the database in order to retrieve more information than the application intended. As with cross-site scripting, any text field or URL has the potential to be used to extract data.
- Session Hijacking: It's important to learn if usernames, passwords, tokens, or other sensitive information is displayed in clear text or poorly encrypted. Malicious users can take this information and use it to log in as someone else.
Security testing involves a shift in mindset from traditional testing. When we test software, we are usually thinking like an end user. For security testing, we need to think like a malicious user. End users take the Happy Path, because they are using the software for its intended purpose, whereas hackers are trying to find any possible security holes and exploit them. Because of this, security testing requires a bit more patience than traditional testing. In the next few posts, I'll be discussing the new skills we can learn, and the ways that we can Think Like a (Security) Tester!