慕尼黑5688855
2019-11-26 15:07:25
在mysql上運(yùn)行查詢(xún)的最安全方法是什么,我知道MySQL和SQL注入涉及的危險(xiǎn)。但是,我不知道如何運(yùn)行查詢(xún)以防止注入其他用戶(hù)(Web客戶(hù)端)可以操縱的變量。我曾經(jīng)編寫(xiě)自己的轉(zhuǎn)義函數(shù),但顯然這是“未完成”的。我應(yīng)該使用什么,以及如何使用它來(lái)通過(guò)python在MySQL數(shù)據(jù)庫(kù)上安全地進(jìn)行查詢(xún)和插入,而又不會(huì)冒mysql注入的風(fēng)險(xiǎn)?
3 回答

慕絲7291255
TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
為避免注入,請(qǐng)使用executewith %s代替每個(gè)變量,然后通過(guò)列表或元組傳遞值作為的第二個(gè)參數(shù)execute。這是文檔中的一個(gè)示例:
c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""", (max_price,))
請(qǐng)注意,這是使用逗號(hào)而不是%(這將是直接字符串替換,不會(huì)轉(zhuǎn)義)。不要這樣做:
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""" % (max_price,))
此外,'%s'如果參數(shù)是字符串,則不需要在位置保持器()周?chē)由弦?hào)。
添加回答
舉報(bào)
0/150
提交
取消