«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Можно ли безопасно использовать mysql_real_escape_string() с специально подготовленными операторами?

Можно ли безопасно использовать mysql_real_escape_string() с специально подготовленными операторами?

Опубликовано 13 ноября 2024 г.
Просматривать:563

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

Есть ли в mysql_real_escape_string() неисправимые недостатки?

Некоторые скептики утверждают, что функция mysql_real_escape_string() фундаментально ошибочна и не может надежно защитить SQL-запросы . В качестве доказательства они указывают на устаревшие статьи.

Можно ли использовать его для специально подготовленных операторов?

Несмотря на эти опасения, все еще возможно использовать mysql_real_escape_string() для создания подготовленные на заказ заявления. Однако это требует пристального внимания к обработке кодировки.

Решение:

Согласно документации MySQL C API для mysql_real_escape_string(), вы должны использовать mysql_set_character_set() для установки набор символов. Это гарантирует, что это также повлияет на набор символов, используемый mysql_real_escape_string().

Пример кода:

#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;
}

Следуя этому подходу и избегая SET NAMES/SET CHARACTER SET, вы можете эффективно использовать mysql_real_escape_string() для защиты ваших SQL-запросов от внедрения.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3