SQL注入详解
今天跟大家分享SQL注入的知识。 前言 先来看一副很有意思的漫画: 相信大家对于学校们糟糕的网络环境和运维手段都早有体会,在此就不多做吐槽了。今天我们来聊一聊SQL注入相关的内容。 1 何谓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 students ; CREATE TABLE