【发布时间】:2018-07-29 22:16:06
【问题描述】:
我正在开发一个aiohttp server 应用程序,我刚刚看到了apparently it isn't able to use SQLAlchemy's ORM layer。所以,我想知道:如果我的应用程序只能使用 SQLAlchemy 的核心,它是否仍然可以防止 SQL 注入攻击?
我的代码如下:
async def add_sensor(db_engine, name):
async with db_engine.acquire() as connection:
query = model.Sensor.__table__.insert().values(name=name)
await connection.execute(query)
对this related question 中接受的答案的评论让我怀疑:
您仍然可以使用 execute() 或其他不会被 被 SQLAlchemy 转义。
那么,我的代码中使用了execute(),上面的引用是否意味着我的代码不安全?总的来说:只有 SQLAlchemy ORM 层才能防止 SQL 注入,就像你最终会启动 execute() 的核心层一样?
【问题讨论】:
-
ORM 层公开了一些接受文字 SQL 的相同方法,例如
order_by(),因此如有疑问,请查看文档(允许用户选择排序是相当普遍的事情)。跨度>
标签: python security sqlalchemy sql-injection aiohttp