SQL注入是一种非常常见的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一。大家也许都听过某某学长通过攻击学校数据库修改自己成绩的事情,这些学长们一般用的就是SQL注入方法。
文章目录:
-
何谓SQL注入?
-
SQL数据库操作示例
-
SQL数据库注入示例
-
如何防止SQL注入问题
-
SQL数据库反注入示例
一、什么SQL注入?
SQL注入其实就是恶意用户通过在表单中填写包含SQL关键字的数据来使数据库执行非常规代码的过程。简单来说,就是数据「越俎代庖」做了代码才能干的事情。这个问题的来源是,SQL数据库的操作是通过SQL语句来执行的,而无论是执行代码还是数据项都必须写在SQL语句之中,这就导致如果我们在数据项中加入了某些SQL语句关键字(比如说SELECT、DROP等等),这些关键字就很可能在数据库写入或读取数据时得到执行。
多言无益,我们拿真实的案例来说话。下面我们先使用SQLite建立一个学生档案表。
二、SQL数据库操作示例
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 建立新的数据表
conn.executescript('''DROP TABLE IF EXISTS st