Busqueda Segura PROTEGIDO
Busqueda: <script>alert(document.cookie)</script>
BLOQUEADO
Intento de injection detectado pero NEUTRALIZADO
El payload se busco literalmente en la base de datos. No hay clientes llamados "
El payload se busco literalmente en la base de datos. No hay clientes llamados "
<script>alert(document.cookie)</script>".
Como se proceso tu input
Tu input:
<script>alert(document.cookie)</script>
Query preparada (placeholder):
SELECT * FROM clients WHERE name LIKE ?
Valor del placeholder (escapado por PDO):
%<script>alert(document.cookie)</script>%
PDO escapa automaticamente el valor. Los caracteres especiales como '
se tratan como texto literal, no como SQL.
No se encontraron clientes con "<script>alert(document.cookie)</script>"
(El payload de injection se busco literalmente - por eso no hay resultados)
(El payload de injection se busco literalmente - por eso no hay resultados)
Diferencias clave con la version vulnerable
buscar.php (VULNERABLE)
// Concatenacion directa = PELIGRO
$q = "SELECT * FROM clients
WHERE name LIKE '%" . $_GET['q'] . "%'";
$conn->query($q);
// Sin escapar = XSS
echo $row['name'];
buscar_secure.php (SEGURO)
// Prepared statement = SEGURO
$stmt = $pdo->prepare("SELECT * FROM clients
WHERE name LIKE ?");
$stmt->execute(['%' . $q . '%']);
// Escapado = Sin XSS
echo htmlspecialchars($row['name']);
Regla de oro:
Nunca concatenes input del usuario directamente en SQL.
Siempre usa prepared statements (PDO o mysqli con bind_param).