什么是 SQL 注入?你怎么能预防呢?
SQL注入是一种网络黑客技术。它是将恶意代码插入数据库并破坏数据库的代码注入技术。这是通过网页输入插入恶意代码。
SQL注入的主要原因是将数据巧妙地提供到SQL查询中,该查询操作我们数据库中的数据。
假设我们有一个包含学生数据的表格。每个学生都可以使用他的学生ID查看自己的数据。SQL查询被设计为从学生那里获取学生ID输入。
现在,学生可以输入他的学生ID为“12345或1=1”。这转化为以下查询。
SELECT * FROM Students WHERE id==12345 or 1=1
现在,上述查询也将返回其他学生的记录,因为1=1始终为真。因此,其他学生的数据不安全,容易被黑客滥用。
Mysql连接器模块具有转义查询值以防止SQL注入的方法。可以使用占位符%s对查询值进行转义。
假设,我们有一个名为“MyTable”的表。
+----------+---------+-----------+------------+ | Name | Class | City | Marks | +----------+---------+-----------+------------+ | Karan | 4 | Amritsar | 95 | | Sahil | 6 | Amritsar | 93 | | Kriti | 3 | Batala | 88 | | Khushi | 9 | Delhi | 90 | | Kirat | 5 | Delhi | 85 | +----------+---------+-----------+------------+
示例
import mysql.connector db=mysql.connector.connect(host="your host", user="your username", password="your password",database="database_name") cursor=db.cursor() query="SELECT * FROM Students WHERE Name=%s" name=("Karan",) cursor.execute(query,name) for row in myresult: print(row)
上面的代码显示了使用占位符来转义查询值。
输出结果
(‘Karan’, 4, ‘Amritsar’ , 95)