"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 > ¿Se puede utilizar mysql_real_escape_string() de forma segura con declaraciones preparadas personalizadas?

¿Se puede utilizar mysql_real_escape_string() de forma segura con declaraciones preparadas personalizadas?

Publicado el 2024-11-13
Navegar:589

Can mysql_real_escape_string() Be Used Safely with Custom Prepared Statements?

¿Tiene mysql_real_escape_string() defectos que no se pueden solucionar?

Algunos escépticos sostienen que la función mysql_real_escape_string() es fundamentalmente defectuosa y no puede proteger de manera confiable las consultas SQL . Señalan artículos obsoletos como evidencia.

¿Se puede utilizar para declaraciones preparadas personalizadas?

A pesar de estas preocupaciones, todavía es posible aprovechar mysql_real_escape_string() para crear Declaraciones preparadas a medida. Sin embargo, requiere especial atención al manejo del juego de caracteres.

Solución:

De acuerdo con la documentación de MySQL C API para mysql_real_escape_string(), debes usar mysql_set_character_set() para configurar el conjunto de caracteres. Esto garantiza que también afecte el conjunto de caracteres utilizado por mysql_real_escape_string().

Ejemplo de código:

#include 

int main() {
  MYSQL *conn = mysql_init(NULL);
  mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0);

  // Change the encoding using mysql_set_charset()
  mysql_set_charset(conn, "utf8");

  // Create a custom prepared statement using mysql_real_escape_string()
  char query[1024];
  mysql_real_escape_string(conn, query, "SELECT * FROM users WHERE username='test'", sizeof(query));

  // Execute the query
  mysql_query(conn, query);

  mysql_close(conn);
  return 0;
}

Si sigue este enfoque y evita SET NAMES/SET CHARACTER SET, puede utilizar mysql_real_escape_string() de manera efectiva para proteger sus consultas SQL contra inyecciones.

Ú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