什么是 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)

猜你喜欢