gpt4 book ai didi

python - 如何在python中将包含单引号或双引号的数据插入数据库?

转载 作者:行者123 更新时间:2023-11-29 16:15:22 25 4
gpt4 key购买 nike

我有一个Python程序,我想将数据插入表中(使用insert into语句)。我从网络(网络抓取)接收数据,并且数据包含单引号和双引号。如您所知,MySQL 允许在表中插入单引号和双引号,因此错误不是来自数据库。当我在 python 中使用该数据时出现问题并出现错误。无论我在 python 中的字符串(插入语句值)中使用单引号还是双引号,这两种方式都会因为数据(包含单引号或双引号)而出现错误。我在我的脚本中使用 MySQL 和 Connector/python我导入mysql。我希望你能明白这一点,抱歉英语不好。

最佳答案

对该行为最可能的解释是 SQL 注入(inject)漏洞。 (这只是一个猜测,因为我们正在推测我们还没有见过的代码;只是行为的描述。)

简短的答案是使用准备好的语句绑定(bind)占位符

https://pynative.com/python-mysql-execute-parameterized-query-using-prepared-statement/

如果由于某种原因这是不可能的,那么至少必须正确转义 SQL 文本中包含的任何潜在不安全值,以使其安全包含

(Little Bobby Tables https://xkcd.com/327/ 中的单引号未转义。)

举个例子,这个 SQL 会抛出一个错误,因为第二个单引号结束了字符串文字,而字符串文字“s错误”后面的内容在 SQL 方面是乱码:

INSERT INTO mytab (mycol) VALUES ( 'It's wrong' )  
^

但这会起作用:

INSERT INTO mytab (mycol) VALUES ( 'It''ll work' )  
^^

因为字符串文字中的单引号被转义,通过在它前面加上另一个单引号。

<小时/>

OWASP 项目很好地概述了 SQL 注入(inject)。

https://www.owasp.org/index.php/SQL_Injection

https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

<小时/>

关于python - 如何在python中将包含单引号或双引号的数据插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855823/

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