簡體   English   中英

如何在python中將包含單引號或雙引號的數據插入數據庫?

[英]How to insert data that contain single or double quotes to database in python?

我在python中有一個程序,我想將數據插入表中(使用insert into語句)。 我從網絡(網絡抓取)接收數據,並且數據包含單引號和雙引號。 眾所周知,MySQL允許在表中插入單引號和雙引號,因此錯誤並非來自數據庫。 當我在python中使用該數據時出現問題,並出現錯誤。 不管我在python的字符串中使用單引號還是雙引號(插入語句值),由於數據(包含單引號或雙引號)兩種方式都會出現錯誤。我在腳本中使用MySQL和Connector / python我導入mysql。 我希望你能得到這個,對不起英語不好。

對該行為的最可能解釋是SQL注入漏洞。 (這只是一個猜測,因為我們正在猜測未見的代碼;僅是對行為的描述。)

簡短的答案是將准備好的語句綁定占位符一起使用

https://pynative.com/python-mysql-execute-parameterized-query-using-prepared-statement/

如果由於某種原因而無法實現,那么至少要最小化SQL文本中包含的任何潛在不安全值,以使其能夠安全地包含在內

(Little Bobby Tables https://xkcd.com/327/中的單引號不會轉義。)

作為例子,這個SQL將拋出一個錯誤,因為第二個單引號結束的字符串常量,而接下來字符串“的結尾s wrong ”是亂碼在SQL方面:

INSERT INTO mytab (mycol) VALUES ( 'It's wrong' )  
                                      ^

但這將起作用:

INSERT INTO mytab (mycol) VALUES ( 'It''ll work' )  
                                      ^^

因為字符串文字中的單引號被轉義,所以在其前面加上另一個單引號。


OWASP項目很好地概述了SQL注入。

https://www.owasp.org/index.php/SQL_Injection

https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM