質問: 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) ``` psycopg2、postgresの公式ドキュメントを読みましたが、関連する記述が見つかりませんでした。 コード実行して試したところ、SQLインジェクションのような挙動が発見されませんでしたが、実際はSQLインジェクションの危険性があるのでしょうか?
回答: 対象の CSV ファイルは誰が用意するのかによっても注意すべきレベルが変わってきますが、悪意の有無に関わらず入力データを事前検証せずにそのまま受け入れるのは、やはりリスクがあると思います。 どんなフォーマット・データが含まれているのか分かりませんが、意図せず SQL として解釈される文字列が含まれていた場合、データが壊れる可能性があります。 **参考:** ヤフーにおけるインプットバリデーション「何も信じるな」