前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sqlalchemy防sql注入

sqlalchemy防sql注入

作者头像
用户1558882
发布2019-08-08 10:35:54
2.9K0
发布2019-08-08 10:35:54
举报
文章被收录于专栏:RgcRgc

银行对安全性要求高,其中包括基本的mysql防注入,因此,记录下相关使用方法:

注意:sqlalchemy自带sql防注入,但是在 execute执行 手写sql时 需要考虑此安全问题

对于 where in 的防sql注入:(in 的内容一定要是tuple类型,否则查询结果不对)

代码语言:javascript
复制
in_str = tuple(input_list)
sql = "(SELECT count(id) FROM {0} WHERE {0}.id IN :in_str);".format(cls.__tablename__)
cursor = db.get_engine(current_app, cls.__bind_key__)
return cursor.execute(text(sql), in_str=in_str).fetchone()[0]

对于 where 一般的防sql注入:

代码语言:javascript
复制
sql = """
                    (select {index}.sec_id,
                    from    {index},
                            {main}
                    where   {index}.sec_id= {main}.sec_id
                    and     {main}.user_id=:user_id);
                """.format(index=TableA.__tablename__,
                           main=TableB.__tablename__)
        cursor = db.get_engine(current_app, TableB.__bind_key__)
        return cursor.execute(text(sql), user_id=user_id).fetchall()

防sql注入 只能对 where里面 等于 号 后面的进行防注入,其他部分的 字符串 仍然需要拼接

其余关键字中的使用方法 参考如下 官网教程

官网教程:https://docs.sqlalchemy.org/en/latest/core/tutorial.html#using-textual-sql

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档