[英]Python psycopg2 string interpolation format vs %
根據psycopg2文檔( http://initd.org/psycopg/docs/connection.html )指出:
Warning Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.
在警告中,它特別引用了不執行以下操作:
cur.execute(SQL % data)
此警告是否也適用於以下使用格式?
cur.execute(SQL.format(data))
我不知道format的內部原理,但是我假設它在下面使用%string interop,這將使它的用法不建議使用
SQL.format()
(其中SQL
是常規的SQL.format()
字符串)實際上並未在SQL.format()
使用%
插值,但存在相同的陷阱:您替換的值無法正確地轉義為SQL(怎么可能是; Python不知道SQL
是SQL語句),然后您的SQL語句可能會受到注入攻擊。
您的各種SQL模塊都有防止此問題的方法,應改為使用它們。
是的,它確實。 字符串插值方法很脆弱,因為它們允許SQL注入攻擊。 在參數化查詢中使用外部(用戶提供)數據作為參數(而不是構建查詢字符串)使這種攻擊變得不可能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.