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)