【问题标题】:parameratized SQL queries for queries to s3 buckets用于查询 s3 存储桶的参数化 SQL 查询
【发布时间】:2022-11-11 02:47:30
【问题描述】:

我在 s3 存储桶中有一个 CSV 文件,我正在使用 boto3 库访问它。我正在使用select_object_content 函数用SQL 语言查询文件。

这是我的代码:

resp = self.s3_client.select_object_content(
    Bucket=S3_BUCKET_MAPPING,
    Key=S3_BUCKET_MAPPING_KEY,
    ExpressionType="SQL",
    Expression=f"SELECT * from s3object s where s.field = 'value'",
    InputSerialization={
        "CSV": {"FileHeaderInfo": "Use"},
        "CompressionType": "GZIP",
    },
    OutputSerialization={"JSON": {}},
)

我的问题是关于表达式:f"SELECT * from s3object s where s.field = 'value'"

  1. 当数据存储在 S3 中而不是实际的 SQL 数据库中时,这种类型的数据获取是否需要考虑 SQL 注入?
  2. 如果 SQL 注入是一个问题,有没有办法像编写访问 SQL 数据库的代码那样参数化这个表达式?到目前为止,我还没有找到任何可以提供帮助的东西。

【问题讨论】:

    标签: python amazon-s3 boto3 sql-injection


    【解决方案1】:

    s3 支持limited SQL syntax。只要您使用的是静态 SQL 或正在使用传递 s3 的参数,就应该正确处理参数。

    当然,如果您开始从不受信任的字符串创建 SQL 表达式,您可能会遇到麻烦。但这里似乎并非如此。

    【讨论】:

      猜你喜欢
      • 2019-08-26
      • 2022-11-05
      • 2017-11-10
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 2019-11-10
      相关资源
      最近更新 更多