"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Es `mysqli_real_escape_string ()` suficiente para evitar ataques de inyección SQL?

¿Es `mysqli_real_escape_string ()` suficiente para evitar ataques de inyección SQL?

Publicado el 2025-02-11
Navegar:908

Is `mysqli_real_escape_string()` Enough to Prevent SQL Injection Attacks?

es "mysqli_real_escape_string" mysqli es suficiente "mysqli_real_escape_string" suficiente contra los ataques sql?

intenta proteger contra inyecciones SQL usando "mySQLI_REAL_STRING ()". Sin embargo, como lo indica Uri2x, esta medida es inadecuada.

vulnerabilidad a inyección sql

"mysqli_real_escape_string ()" solo escapa ciertos personajes, dejando su pregunta vulnerable a sql ataques de inyección. Por ejemplo, el siguiente código aún podría ser vulnerable:

$email = mysqli_real_escape_string($db_con, $_POST['email']);
$query = "SELECT * FROM users WHERE email = '" . $email . "'";

un atacante podría ingresar una dirección de correo electrónico como "correo electrónico "@example.com" para explotar la consulta, agregando declaraciones SQL adicionales después de la entrada escapada.

use de declaraciones preparadas

en lugar de "mysqli_real_escape_string ()", la forma más efectiva de prevenir las inyecciones de SQL es emplear declaraciones preparadas. Las declaraciones preparadas separan datos de la cadena de consulta, evitando la contaminación de datos.

$stmt = $db_con->prepare("INSERT INTO users (email, psw) VALUES (?, ?)");
$stmt->bind_param('ss', $email, $psw);
$email = mysqli_real_escape_string($db_con, $_POST['email']);
$psw = mysqli_real_escape_string($db_con, $_POST['psw']);
$stmt->execute();

estricto carácter Whitelisting

en situaciones donde las declaraciones preparadas no son factibles, implementar una lista blanca de carácter estricto puede garantizar la seguridad. Esto implica filtrar la entrada para asegurarse de que solo contenga caracteres permitidos.

conclusion

"mysqli_real_escape_string ()" Solo es insuficiente para proteger contra las inyecciones SQL. Las declaraciones preparadas y la lista blanca estricta proporcionan salvaguardas más robustas contra estos ataques.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3