【发布时间】:2020-09-09 05:18:57
【问题描述】:
您好,我正在尝试使用 SQLAlchemy 在烧瓶上运行 postgresql 查询,但我不明白如何在使用 LIKE '%' 参数时保持查询的清理。
db.execute("SELECT * FROM books WHERE isbn LIKE '%:isbn%' OR title LIKE '%:title%L' OR author = '%:author%'", {"isbn": isbn, "title": title, "author": author})
这就是我得到的,但它当然不会运行。而且我不想牺牲系统的完整性来允许使用 LIKE。
有人对我有什么建议吗?
【问题讨论】:
-
您使用的映射器不应该通过清理传递的变量来解决这个问题吗?
-
映射器是什么意思?
-
那个 db.execute 函数。它不是来自某个库并将传递的变量注入到查询中吗?也许这对你有帮助:stackoverflow.com/questions/1279613/…
-
不,它没有。
-
您是否担心用户在您不想要的地方注入通配符,或者担心它们完全从字符串中转义并运行完全不同的命令?
标签: postgresql flask-sqlalchemy sql-injection