【问题标题】:How to protect against SQL Injection with pandas read_gbq如何使用 pandas read_gbq 防止 SQL 注入
【发布时间】:2019-12-03 18:17:31
【问题描述】:

我如何安全地使用 pandas_gbq.read_gbq 来防止 SQL 注入,因为我无法在文档中找到对其进行参数化的方法

我查看了有关参数化方法的文档以及 google 网站和其他来源。

df_valid = read_gbq(QUERY_INFO.format(variable), project_id='project-1622', location='EU') 查询类似于SELECT name, date FROM table WHERE id = '{0}'

我可以输入 p' 或 '1'='1 就可以了

【问题讨论】:

    标签: python sql pandas google-bigquery sql-injection


    【解决方案1】:

    根据Google BigQuery docs,您必须使用带有SQL 参数化语句的指定配置:

    import pandas as pd
    
    sql = "SELECT name, date FROM table WHERE id = @id"
    
    query_config = {
        'query': {
            'parameterMode': 'NAMED',
            'queryParameters': [
                {
                    'name': 'id',
                    'parameterType': {'type': 'STRING'},
                    'parameterValue': {'value': 1}
                }
            ]
        }
    }
    
    df = pd.read_gbq(sql, project_id='project-1622', location='EU', configuration=query_config)
    

    【讨论】:

    • 谢谢,我发现我需要这样的东西,我的做法略有不同,但我认为这会奏效。
    猜你喜欢
    • 1970-01-01
    • 2015-09-07
    • 2015-05-04
    • 1970-01-01
    • 2011-06-21
    • 2011-10-02
    • 2016-11-16
    • 2015-09-27
    • 1970-01-01
    相关资源
    最近更新 更多