我正在为我们的网站编写一些 Google Big-query
动态报告实用程序,这将允许用户选择要在查询中替换的参数。鉴于此查询"template":
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 Big-query
客户端 API 执行查询,我如何才能在这种情况下防止类似 sql-injection
的攻击,
并且 API 不允许像传统的 RDBMS
api 那样使用定位参数。
最佳答案
自从在 BigQuery 中推出标准 SQL 以来,就可以使用 query parameters作为一种防止 SQL 注入(inject)的方法。在您的查询中,您可以使用 @
后跟名称来指定命名参数,例如
SELECT x, y FROM T WHERE x <= @x_max AND y = @target_y;
然后您可以通过 API 的 query_parameters
属性提供参数值。
关于java - 如何防止 Google Big Query 上的查询注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20805617/