学习目标1了解什么是数据库2了解什么是数据库操作系统3了解数据库的crud4了解基本的数据库攻击手段-sql注入数据库 是长期存储在计算机内有组织可共享的数据集合dbms数据库管理系统就是数据库的专属软件管家专门帮忙管理数据库里的数据分为mysql oracle sqlserver三种数据库通过sql结构化查询还存取管理关系型数据库的数据数据库的层次结构每一行叫做一个记录 每一列叫做一个字段列创建数据库操作可以看到我的sql语句已经成功运行这句增加数据库的语句的意思为CREATE DATABASE abc 创建一个数据库名字为abcCHARACTER SET utf8 将字符串类型设置为utf8类型在这里引出一个新点什么是utf8类型所谓的utf8是字符串格式的一种常见的字符串类型属于万能可用于存储汉字字母符号在电脑中怎么使用二进制来存储utf8兼容英文中文特殊符号通用性强而另一种常见的gbk编码只适合国内软件占用空间小COLLATE排库规则 utf8_general_ci这句数据库的语句意思是用utf8_general_cicase insensitive这个规则的意思是不区分大小写 字母大写小写等同在数据库abc下创建表usersCREATE TABLE users ( id INT PRIMARY KEY, -- 学号主键唯一不重复name VARCHAR(50) NOT NULL, -- 学生姓名NOT NULL: 必须填写不能留空id_card VARCHAR(18) NOT NULL, -- 身份证号非空18位固定长度phone VARCHAR(11) NOT NULL, -- 手机号非空11位固定长度address TEXT, -- 地址长度不固定password VARCHAR(50) NOT NULL -- 校园网密码NOT NULL: 必须填写不能留空可以很明白SQL-结构化查询语言1.数据定义语言DDL用于创建和修改数据库对象如表和索引的结构如CREATE、ALTER、DROP等语句。2.数据操纵语言DML用于对数据库中的数据进行新增、修改、删除等操作如INSERT、UPDATE、DELETE等语句。3.数据查询语言DQL用于对数据进行查询操作如SELECT语句。4.数据控制语言DCL用于控制用户对数据的访问权限如GRANT和REVOKE语句-- 插入数据 INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);INSERT INTO users (id, name, id_card, phone, address, password) VALUES (1, 吕洪吉, 210105199901011234, 13800138000, 辽宁省沈阳市和平区, 123456);-- 修改数据 UPDATE 表名 SET 字段1新值1, 字段2新值2, ... [WHERE 条件];-- 删除数据 DELETE FROM 表名 [WHERE 条件];后续仅需要一步一步执行即可很简单-- 查询表中所有数据*代表所有字段 SELECT * FROM users;-- 查询指定字段只查姓名和密码 SELECT name, password FROM users;-- 单条件查询查询id1的用户信息 SELECT * FROM users WHERE id1;-- 多条件AND同时满足id1 AND name老李的用户 SELECT name, password FROM users WHERE id1 AND name老李;-- 多条件OR满足id1 或 id2的用户 SELECT * FROM users WHERE id1 OR id2;-- 查询名字以“吕”开头的用户%匹配0个或多个字符 SELECT * FROM users WHERE name LIKE 吕%;-- 查询名字第二个字是“洪”的用户_匹配1个字符 SELECT * FROM users WHERE name LIKE _洪%;-- 按id升序排序ASC默认可以省略 SELECT * FROM users ORDER BY id ASC;-- 按id降序排序DESC必须写 SELECT * FROM users ORDER BY id DESC;-- 写法1只取前2条数据 SELECT * FROM users LIMIT 2;-- 写法2分页查询从第1条偏移量0开始取2条数据 SELECT * FROM users LIMIT 0, 2;-- 分页示例第2页每页2条偏移量页码-1 * 每页条数 SELECT * FROM users LIMIT 2, 2;感兴趣可以敲一下但是我觉得没有必要很简单的东西sql注入漏洞所谓的sql注入漏洞就是攻击者通过构造精美的sql语句从而改变后端数据库的结构从而对数据库进行未授权的非法访问漏洞其根本是缺乏过滤的直接拼接代码直接将用户输入的$name和$pwd拼接到sql语句中且未进行任何过滤。这导致攻击者可以输入恶意sql语句指令从而篡改查询逻辑绕过验证和窃取数据。万能密码or11-- 正常账号密码登录逻辑 SELECT * FROM users WHERE name$name AND password$pwd;我们现在在两个输入栏中输入万能密码or11就变成了SELECT * FROM users WHERE name OR 11 AND password OR 11;and在逻辑表达式本质中是逻辑与操作||只有将双方的条件全为真时才通过检验or则是只要有一个为真则就可以通过校验现在我们来对这句sql语句进行拆分第一步先进行and操作11andpassword明显不对第二步剩下的所有or进行合并nameor假or11我们从左往右一步步计算假与真进行或操作为真最终这个逻辑表达式的语句为真则可以进入到数据库查询逻辑成立实操开始登陆成功