首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确地参数化查询和转义输入以防止SQL注入?

如何正确地参数化查询和转义输入以防止SQL注入?
EN

Stack Overflow用户
提问于 2019-03-22 17:49:26
回答 2查看 260关注 0票数 0

我在Python3.4.3中使用mysqlclient (用于python3的叉),根据我在网上看到的内容(Escape string Python for MySQL),MySQLdb Python查询应该像这样编写,以便进行适当的转义:

代码语言:javascript
复制
query = self.conn.cursor()
query.execute('SELECT 1 FROM servers WHERE ip=%s AND port=%s AND game_id=%s' ,(ip,port,gameid))

不幸的是,当我这样做时,我会得到以下错误:

%:‘字节’和'tuple‘mysqldb不支持的操作数类型

这似乎有效,但这可能导致SQL注入吗?

代码语言:javascript
复制
query = self.conn.cursor()
query.execute("SELECT 1 FROM servers WHERE ip='%s' AND port=%s AND game_id='%s'" % (ip,port,gameid))

那么,如何使用首选语法方法安全地使上面的查询工作,该方法将在Python3.4.3中为我转义所有这些?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-23 04:44:36

我无法让mysqlclient (MySQLdb的一个分支) https://pypi.org/project/mysqlclient/用正确的https://pypi.org/project/mysqlclient/语法(为您转义一切的语法)使用Python3.4。我切换到mysql-连接器,相同的查询代码现在运行良好。看起来像是mysqlclient中的一个bug。

代码语言:javascript
复制
pip3 install mysql-connector-python

https://pypi.org/project/mysql-connector-python/

票数 0
EN

Stack Overflow用户

发布于 2019-03-23 04:53:57

mysqlclient不再支持Python3.4。使用更新的Python。

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

https://stackoverflow.com/questions/55305236

复制
相关文章

相似问题

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