Chapter 6 - Application Security Flashcards
Software Development Life Cycle (SDLC)
The SDLC describes the steps in a model for software development throughout its life.
What are the main steps of the Software Development Life Cycle?
- Planning
- Requirements
- Design
- Coding
- Testing
- Training and Transition
- Ongoing Operations and Maintenance
- End of Life Decommissioning
What are the four most common types of Code Deployment Environments?
- Development Environment
- Test Environment
- Staging Environment
- Production Environment
DevOps
DevOps combines software development and IT operations with the goal of optimizing the SDLC. This is done by using collections of tools called toolchains to improve the SDLC processes.
Continuous Integration (CI)
Continuous Integration (CI) is a development practice that consistently checks code into a shared repository. The main goal of this approach is to enable the use of automation and scripting to implement automated courses of action that result in continuous delivery of code.
Continuous Deployment/Delivery (CD)
Continuous Deployment (CD) rolls out tested changes into production automatically as soon as they have been tested. Using continuous integration and continuous deployment methods requires building continuous validation and automated security testing into the pipeline testing process.
Application Programming Interfaces (API)
APIs are interfaces between clients and servers or applications and operating systems that define how the client should ask for information from the server and how the server will respond.
Static Code Analysis
Static Code Analysis is conducted by reviewing the code for an application. Static Analysis does not run the program; instead, it focuses on understanding how the program is written and what the code is intended to do.
Dynamic Code Analysis
Dynamic Code Analysis relies on execution of the code while providing it with input to test the software. Automated dynamic analysis will run all of the interfaces that the code exposes to the user with a variety of inputs, searching for vulnerabilities.
Fuzzing
Fuzzing involves sending invalid or random data to an application to test its ability to handle unexpected data. The application is monitored to determine if it crashes, fails or responds in an incorrect manner.
Injection Vulnerabilities
Injection Vulnerabilities allow an attacker to supply some type of code to the web application as input and trick the web server into either executing that code or supplying it to another server to execute.
Blind Content-Based SQL Injection
In a Blind Content-Based SQL Injection attack, the perpetrator sends input to the web application that tests whether the application is interpreting injected code before attempting to carry out an attack.
Blind Timing-Based SQL Injection
In a Blind Timing-Based SQL Injection attack, the amount of time required to process a query is used as a channel for retrieving information from a database.
Session Hijacking
Session Hijacking attacks take over an already authenticated session with a website/application. An attacker can steal a cookie managed by the target user’s web browser to impersonate them and gain access.
Unvalidated Redirects
Unvalidated Redirects allow an attacker to redirect the user to a malicious site. Some web applications allow the browser to pass destination URLs to the application and then redirect the user to that URL at the completion of their transaction.