3
綁定列表PARAMS我有這樣的SQL查詢:pandas中的SQL注入;在SQLAlchemy的
sql = "select * from table where date in {dl}"
其中D1是日期的元組。我可以通過做string.format(dl=...)
然後在熊貓中使用read_sql_query
來完成查詢,但是我讀到這可能導致SQL注入,因此不安全。
但是,在SQLAlchemy中似乎並沒有一個好的選擇。您似乎無法使用text()
將列表傳遞給params,並且將列表轉換爲字符串會導致錯誤。我發現你可以迭代列表並逐個傳遞參數,但爲什麼有人想這樣做呢?
清理變量(刪除引號,分號等)有助於降低SQL注入的風險嗎?不能使用原始SQL字符串聽起來像是一個可怕的前景。
謝謝,這適用於日期元組。如果參數是一個字符串呢? 'bindparams'會不會正確地逃避這一點,並避免SQL注入的可能性? – tangfucius 2014-10-03 18:38:47
@tangfucius它實際上從來沒有逃脫 - 它直接傳遞給DBAPI'execute()'作爲參數,**與數據庫處理的SQL **分開。 – univerio 2014-10-03 18:45:27
太棒了!那使得它完全安全。 – tangfucius 2014-10-03 19:04:17