sqlalchemy防sql注入
Posted rgcloveyaya
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlalchemy防sql注入相关的知识,希望对你有一定的参考价值。
银行对安全性要求高,其中包括基本的mysql防注入,因此,记录下相关使用方法:
注意:sqlalchemy自带sql防注入,但是在 execute执行 手写sql时 需要考虑此安全问题
对于 where in 的防sql注入:(in 的内容一定要是tuple类型,否则查询结果不对)
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注入:
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
以上是关于sqlalchemy防sql注入的主要内容,如果未能解决你的问题,请参考以下文章