首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将包含单引号或双引号的数据插入python中的数据库?

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

Stack Overflow用户
提问于 2019-02-24 19:46:08
回答 1查看 2.4K关注 0票数 1

我在python中有一个程序,我希望将数据插入到表中(使用insert into语句)。我从网络(网络刮取)接收数据,数据包含单引号和双引号。如您所知,MySQL允许向表中插入单引号和双引号,因此错误不是来自数据库。当我在python中使用该数据时出现了问题,并出现了一个错误。如果我在python中使用字符串(插入语句值)中的单引号或双引号,在这两种情况下都会出现错误,因为数据(包含单引号或双引号).I使用mysql和Connector/ python,在我的脚本中导入MySQL。我希望你能搞定,很抱歉英语不太好。

EN

回答 1

Stack Overflow用户

发布于 2019-02-26 17:07:55

对此行为最有可能的解释是SQL注入漏洞。(这只是猜测,因为我们推测的是我们尚未看到的代码;只是对行为的描述。)

简单来说,答案是在绑定占位符中使用准备好的语句。

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

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

(“小波比表”中的单引号https://xkcd.com/327/没有转义。)

例如,此SQL将抛出一个错误,因为第二个单引号结束字符串文本,而字符串文本"s wrong“结尾的内容在SQL中是胡扯的:

代码语言:javascript
复制
INSERT INTO mytab (mycol) VALUES ( 'It's wrong' )  
                                      ^

但这样做是可行的:

代码语言:javascript
复制
INSERT INTO mytab (mycol) VALUES ( 'It''ll work' )  
                                      ^^

因为字符串文本中的单引号是转义的,方法是在单引号前面加上另一个单引号。

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

Injection

Sheet

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54855823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档