Difference between revisions of "Query Parameterization Cheat Sheet (Hawaiian Pidgin English)"

From OWASP
Jump to: navigation, search
m (this to dis)
m (this to da)
Line 8: Line 8:
 
  __TOC__{{TOC hidden}}
 
  __TOC__{{TOC hidden}}
  
'Ey, Howzit? One [[SQL Injection]] is da moddah of all web vulnerabilities. Fo' real! So much so that it's the [[Top_10_2013-A1|#1 item in the OWASP Top 10]].  It represents a serious threat because SQL Injection allows evil attacker code to change the structure of a web application's SQL statement in a way that can steal data, modify data, or potentially facilitate command injection to the underlying OS.   
+
'Ey, Howzit? One [[SQL Injection]] is da moddah of all web vulnerabilities. Fo' real! So much so that it's da [[Top_10_2013-A1|#1 item in da OWASP Top 10]].  It represents a serious threat because SQL Injection allows evil attacker code to change da structure of a web application's SQL statement in a way that can steal data, modify data, or potentially facilitate command injection to da underlying OS.   
Dis cheat sheet is a derivative work of the [[SQL Injection Prevention Cheat Sheet]].  Mahalos yeah fo' checking out dis place. Shoots!
+
Dis cheat sheet is a derivative work of da [[SQL Injection Prevention Cheat Sheet]].  Mahalos yeah fo' checking out dis place. Shoots!
  
 
= Parameterized Query Examples =
 
= Parameterized Query Examples =
  
SQL Injection is best prevented through the use of [[SQL_Injection_Prevention_Cheat_Sheet#Defense_Option_1:_Prepared_Statements_.28Parameterized_Queries.29|''parameterized queries'']]. The following chart demonstrates, with real-world code samples, how to build parameterized queries in most of the common web languages. The purpose of these code samples is to demonstrate to the web developer how to avoid SQL Injection when building database queries within a web application.
+
SQL Injection is best prevented through the use of [[SQL_Injection_Prevention_Cheat_Sheet#Defense_Option_1:_Prepared_Statements_.28Parameterized_Queries.29|''parameterized queries'']]. Da following chart demonstrates, with real-world code samples, how to build parameterized queries in most of da common web languages. Da purpose of these code samples is to demonstrate to da web developer how to avoid SQL Injection when building database queries within a web application.
  
 
== Prepared Statement Examples ==
 
== Prepared Statement Examples ==
Line 101: Line 101:
 
== Stored Procedure Examples ==
 
== Stored Procedure Examples ==
  
The SQL you write in your web application isn't the only place that SQL injection vulnerabilities can be introduced. If you are using Stored Procedures, and you are dynamically constructing SQL inside them, you can also introduce SQL injection vulnerabilities. To ensure dis dynamic SQL is secure, you can parameterize dis dynamic SQL too using bind variables. Here are some examples of using bind variables in stored procedures in different databases:
+
Da SQL you write in your web application isn't da only place that SQL injection vulnerabilities can be introduced. If you are using Stored Procedures, and you are dynamically constructing SQL inside them, you can also introduce SQL injection vulnerabilities. To ensure dis dynamic SQL is secure, you can parameterize dis dynamic SQL too using bind variables. Here are some examples of using bind variables in stored procedures in different databases:
  
 
{| class="wikitable nowraplinks"
 
{| class="wikitable nowraplinks"
Line 110: Line 110:
 
| Oracle - PL/SQL
 
| Oracle - PL/SQL
 
|
 
|
Normal Stored Procedure - no dynamic SQL being created. Parameters passed in to stored procedures are naturally bound to their location within the query without anything special being required.
+
Normal Stored Procedure - no dynamic SQL being created. Parameters passed in to stored procedures are naturally bound to their location within da query without anything special being required.
  
 
   PROCEDURE SafeGetBalanceQuery(
 
   PROCEDURE SafeGetBalanceQuery(
Line 121: Line 121:
 
| Oracle - PL/SQL  
 
| Oracle - PL/SQL  
 
|   
 
|   
Stored Procedure Using Bind Variables in SQL Run with EXECUTE. Bind variables are used to tell the database that the inputs to dis dynamic SQL are 'data' and not possibly code.
+
Stored Procedure Using Bind Variables in SQL Run with EXECUTE. Bind variables are used to tell da database that da inputs to dis dynamic SQL are 'data' and not possibly code.
  
 
   PROCEDURE AnotherSafeGetBalanceQuery(
 
   PROCEDURE AnotherSafeGetBalanceQuery(
Line 136: Line 136:
 
| SQL Server- Transact-SQL
 
| SQL Server- Transact-SQL
 
|
 
|
Normal Stored Procedure - no dynamic SQL being created. Parameters passed in to stored procedures are naturally bound to their location within the query without anything special being required.
+
Normal Stored Procedure - no dynamic SQL being created. Parameters passed in to stored procedures are naturally bound to da location within da query without anything special being required.
  
 
   PROCEDURE SafeGetBalanceQuery(
 
   PROCEDURE SafeGetBalanceQuery(
Line 147: Line 147:
 
| SQL Server- Transact-SQL
 
| SQL Server- Transact-SQL
 
|
 
|
Stored Procedure Using Bind Variables in SQL Run with EXEC. Bind variables are used to tell the database that the inputs to dis dynamic SQL are 'data' and not possibly code.
+
Stored Procedure Using Bind Variables in SQL Run with EXEC. Bind variables are used to tell da database that da inputs to dis dynamic SQL are 'data' and not possibly code.
  
 
   PROCEDURE SafeGetBalanceQuery(@UserID varchar(20),
 
   PROCEDURE SafeGetBalanceQuery(@UserID varchar(20),
Line 161: Line 161:
  
 
= References =
 
= References =
* [http://bobby-tables.com/ The Bobby Tables site (inspired by the XKCD webcomic) has numerous examples in different languages of parameterized Prepared Statements and Stored Procedures]
+
* [http://bobby-tables.com/ Da Bobby Tables site (inspired by da XKCD webcomic) has numerous examples in different languages of parameterized Prepared Statements and Stored Procedures]
 
* OWASP [[SQL Injection Prevention Cheat Sheet]]
 
* OWASP [[SQL Injection Prevention Cheat Sheet]]
  

Revision as of 08:47, 7 July 2014

Cheatsheets-header.jpg

Last revision (mm/dd/yy): 07/7/2014

Introduction

'Ey, Howzit? One SQL Injection is da moddah of all web vulnerabilities. Fo' real! So much so that it's da #1 item in da OWASP Top 10. It represents a serious threat because SQL Injection allows evil attacker code to change da structure of a web application's SQL statement in a way that can steal data, modify data, or potentially facilitate command injection to da underlying OS. Dis cheat sheet is a derivative work of da SQL Injection Prevention Cheat Sheet. Mahalos yeah fo' checking out dis place. Shoots!

Parameterized Query Examples

SQL Injection is best prevented through the use of parameterized queries. Da following chart demonstrates, with real-world code samples, how to build parameterized queries in most of da common web languages. Da purpose of these code samples is to demonstrate to da web developer how to avoid SQL Injection when building database queries within a web application.

Prepared Statement Examples

Stored Procedure Examples

Da SQL you write in your web application isn't da only place that SQL injection vulnerabilities can be introduced. If you are using Stored Procedures, and you are dynamically constructing SQL inside them, you can also introduce SQL injection vulnerabilities. To ensure dis dynamic SQL is secure, you can parameterize dis dynamic SQL too using bind variables. Here are some examples of using bind variables in stored procedures in different databases:

References

Authors and Primary Editors

Jim Manico - jim [at] owasp.org
Dave Wichers - dave.wichers [at] aspectsecurity.com
Neil Matatal - neil [at] owasp.org

Other Cheatsheets