

使用しているのはpython、psycopg2

下記のようなコードが実行するとき、一回ファイルの中身を読み込み、標準入力からDBへ書き込みます。  
もし、ファイルの中身にSQLインジェクションができるような記述がある場合、OSに解釈され、SQLインジェクションが発生する可能性があるのでしょうか？

[code]

    conn_config = dict(port="5432", dbname="test", password="test")
    with psycopg2.connection(**conn_config) as conn:
        with conn.cursor() as cur:
            with open("test.csv") as f:
                cur.copy_expert(sql="COPY test FROM STDIN", file=f)
    
[/code]

psycopg2、postgresの公式ドキュメントを読みましたが、関連する記述が見つかりませんでした。  
コード実行して試したところ、SQLインジェクションのような挙動が発見されませんでしたが、実際はSQLインジェクションの危険性があるのでしょうか？


CC BY-SA 4.0
2021-02-21T08:34:06.577
74174
2021-02-21T11:59:31.600
2021-02-21T11:59:31.600
7290
43823
question
python sql postgresql security
Postgres の COPY tablename FROM stdin with csv はSQLインジェクションの危険性がありますか？


対象の CSV
ファイルは誰が用意するのかによっても注意すべきレベルが変わってきますが、悪意の有無に関わらず入力データを事前検証せずにそのまま受け入れるのは、やはりリスクがあると思います。

どんなフォーマット・データが含まれているのか分かりませんが、意図せず SQL として解釈される文字列が含まれていた場合、データが壊れる可能性があります。

**参考:**  
[ヤフーにおけるインプットバリデーション「何も信じるな」](https://techblog.yahoo.co.jp/security/post_40/)


CC BY-SA 4.0
2021-02-21T11:33:44.957
74184
2021-02-21T11:33:44.957
3060
74174
answer