首页 > 解决方案 > 如何使用 FastAPI 后端防止 Cloud Armor WAF SQL 注入提示?

问题描述

对于上下文,我有一个 FastAPI 微服务,它位于受云装甲保护的负载均衡器后面。sql-i 规则是在预览模式下配置的。对于路线,我违反了 SQL-i 规则。

我使用 FastAPI 作为后端,使用 mysql-connector-python 来执行查询。没有使用 ORM。我收到 SQL-i 提示的路线有:

  1. 请求正文上的输入验证作为中间件
  2. 参数化 sql 查询

发现:

进一步的研究表明我应该使用准备好的语句或 ORM。我正在使用准备好的语句方法,它似乎无法与我的 mysql-connector 一起正常工作。它只会在参数化查询中无限停留,当我从光标cursor.fetchall()中删除属性时情况并非如此。prepared=True

我可能做错了什么?我也不确定我应该在哪里指出问题。抱歉,我是 Cloud Armor、FastAPI 和使用原始 sql 语句的新手。我一直在将 ORM 与其他服务一起使用,它们似乎工作正常,没有任何 SQL-i 提示。

更新:能够为应用程序实现准备好的语句,仍然可以获取上面提到的 SQL 注入漏洞的日志。

标签: mysqlsql-injectionfastapimysql-connector-pythongoogle-cloud-armor

解决方案


推荐阅读