我正在为我们的网站编写一些Google Big-query
动态报告工具,允许用户在查询中选择要替换的参数。鉴于此查询“模板”:
SELECT name ,
birthday
FROM [dataset.users]
WHERE registration_date = '{{registration_date}}'
我们从用户处获取{{registration_date}}值并将其替换为模板,从而产生查询:
SELECT name ,
birthday
FROM [dataset.users]
WHERE registration_date = '2013-11-11'
在这种情况下,如果我使用Google sql-injection
客户端API执行查询,我如何能够阻止Big-query
类攻击,
并且API不允许使用传统RDBMS
apis上的定位参数。
答案 0 :(得分:6)
在OWASP中检查“防御选项3:转义所有用户提供的输入”:
更新:参数化查询现在是一个选项
答案 1 :(得分:5)
自从在BigQuery中启动标准SQL以来,可以使用query parameters作为防止SQL注入的方法。在查询中,您可以使用@
后跟名称(例如
SELECT x, y FROM T WHERE x <= @x_max AND y = @target_y;
然后,您可以通过API的query_parameters
属性提供参数值。