SQL injection is a type of vulnerabilities in database access code that allows attackers to execute unauthorized queries on the database. SQL injection typically occurs when an application uses input to construct dynamic SQL statements to access the database. SQL injection may also occur if stored procedures use dynamic queries that include untrusted input. Using the SQL injection attack, an attacker can execute arbitrary commands on the database with the privileges of the application. SQL injection applies to all applications that query SQL databases.
SQL injection allows the attacker to access any data in the database. The attacker will usually use this to extract any sensitive data from the database. If there are any passwords in the database, the attacker is likely to try to use them to login as the administrator and take over the application or the server. Some database servers allow so-called "stacked queries". "Stacked queries" allow executing multiple queries separated by a semi-colon from one string. If "stacked queries" are enabled, SQL injection allows the attacker to execute any queries on the database server. This usually allows the attacker to take full control of the application. Many database servers also allow executing arbitrary operating system commands. The attacker may abuse that functionality with SQL injection to take full control of the application or the server.
To prevent this problem, validate all input and use parameterized APIs for database access.
Validate all input:
- Validate All Input
- Validate Input for Length, Range, Format, And Type
- Validate All Input Passed to the Database
Use parameterized APIs for database access:
To check for adequate protection against this vulnerability, find all queries generated by the application and verify that all input is validated, and that parameterized APIs are used for database access.
All input is validated:
- All Input Is Validated
- Input Is Validated for Length, Range, Format, And Type
- All Database Input Is Validated
Parameterized APIs are used for database access:
- Parameterized APIs Are Used for Database Access
- Stored Procedures with Type-safe Parameters Are Used for SQL Queries
Computer Based Training Links
Use the following Computer Based Training courses to learn more about SQL Injection including techniques for remediation and prevention.
OWASP Top Threats & Mitigations
This course examines in depth the vulnerabilities, threats, and mitigations described in the OWASP Top 10 2013. Upon completion of this class, participants will be able to identify and mitigate the greatest threats that web application developers face, including: Injection, Broken Authentication and Session Management, Cross-Site Scripting (XSS), Insecure Direct Object References, Security Misconfiguration, Sensitive Data Exposure, Missing Function Level Access Control, Cross-Site Request Forgery (CSRF), Using Components with Known Vulnerabilities, and Unvalidated Redirects and Forwards.
Creating Secure C# Code
This course will provide a deep understanding of application security risks and secure coding standards for C# applications. The main lesson guides students through the concepts underlying the coding principles and illustrates real-world best practices and techniques, and the labs allow students to test what they have learned.
Valid login credentials and enrollment in the course itself are required to access Team Professor content. If you need login credentials, please contact email@example.com for help.
- For more information about SQL injection attacks, see https://www.owasp.org/index.php/SQL_Injection