gpt4 book ai didi

mysql - 是否有任何范围可以转义 mysql 查询中的所有特殊字符?

转载 作者:行者123 更新时间:2023-11-29 03:31:03 24 4
gpt4 key购买 nike

我有一组要插入数据库的随机数据查询。随机数据可能有任何特殊字符。例如:

INSERT INTO tablename VALUES('!^'"twco\dq');

是否有任何范围可以转义所有特殊字符?

请帮忙。

最佳答案

不,MySQL 中没有自动转义所有特殊字符的“作用域”。

如果您有一个文本文件,其中包含使用可能不安全的“随机值”创建的语句,如下所示:

INSERT INTO tablename VALUES('!^'"twco\dq');
^^^^^^^^^^^

你基本上完蛋了。 MySQL 无法解读炒鸡蛋。没有使 MySQL 使用这样的语句的“模式”。

幸运的是,该特定语句会引发错误。更悲惨的是一些邪恶的随机数据,

x'); DROP TABLE students; --

如果那个随机字符串在没有被转义的情况下被合并到你的 SQL 文本中,结果将是:

INSERT INTO tablename VALUES('x'); DROP TABLE students; --');

必须在将值合并到 SQL 文本中之前完成特殊字符的转义。

您需要获取随机字符串值:

!^'"twco\dq

并通过一个函数运行它,该函数执行必要的转义以使该值安全地包含在 SQL 语句中。

MySQL 提供 real_escape_string_function 作为其 C 库的一部分。引用 https://dev.mysql.com/doc/refman/5.5/en/mysql-real-escape-string.html .多种语言的 MySQL 连接器公开了相同的功能。

“转义”的更好模式是使用准备好的语句绑定(bind)占位符,因此您的语句将是静态文字,如下所示:

INSERT INTO tablename VALUES ( ? )

关于mysql - 是否有任何范围可以转义 mysql 查询中的所有特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30575905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com