什么是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 |
+----------+---------+-----------+------------+
更多Python相关文章,请阅读:Python 教程
示例
import mysql.connector
db=mysql.connector.connect(host="你的主机", user="你的用户名", password="你的密码",database="数据库名")
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)