首页 > 后端开发 > php教程 > mysql_real_escape_string() 可以安全地与自定义准备语句一起使用吗?

mysql_real_escape_string() 可以安全地与自定义准备语句一起使用吗?

Patricia Arquette
发布: 2024-11-19 06:04:02
原创
855 人浏览过

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_real_escape_string() 的 MySQL C API 文档,您应该使用 mysql_set_character_set() 来设置字符集。这确保它也会影响 mysql_real_escape_string() 使用的字符集。

代码示例:

#include <mysql.h>

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;
}
登录后复制

通过遵循此方法并避免设置名称/设置字符集,您可以有效地利用 mysql_real_escape_string() 来保护您的 SQL 查询免受注入。

以上是mysql_real_escape_string() 可以安全地与自定义准备语句一起使用吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板