Prevention
Core Principles
Input Validation / Sanitization
Always Sanitize
Example Validation
// Validate email format
if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
die("Invalid email format");
}
// Whitelist alphanumeric only
if (!preg_match('/^[a-zA-Z0-9]+$/', $_POST['username'])) {
die("Invalid characters in username");
}Parameterized Queries
The Problem (Vulnerable Code)
The Solution (Parameterized)
Why It Works
Approach
Query
Data
Parameterized Queries by Language
PHP (PDO)
Python (psycopg2)
Java (PreparedStatement)
C# (.NET)
Node.js (mysql2)
Output Sanitization
Why?
Solution
MSSQL-Specific Precautions
Don't Run as Sysadmin!
MSSQL Database Roles
Role
Privileges
Recommended Approach
Disable Dangerous Functions
Functions Attackers Abuse
Function
Attack
Revoke Execution Privileges
Defense in Depth
Multiple Layers
WAF Rules
Checklist
Development
Database
Infrastructure
Quick Reference
Parameterized Query
Revoke Dangerous Functions
Least Privilege User
Last updated