长春网站排名方案,wordpress移动排版xiu,百度网盘下载安装,藁城网站建设本文章写与2025年12月 1.初步了解数据库#xff08;MySQL#xff09;
MySQL 是目前最流行的开源关系型数据库管理系统#xff08;RDBMS#xff09; 之一#xff0c;广泛应用于 Web 开发、数据分析、后端服务等场景#xff0c;以轻量、高效、易用、免费#xff08;社区版…本文章写与2025年12月1.初步了解数据库MySQLMySQL 是目前最流行的开源关系型数据库管理系统RDBMS之一广泛应用于 Web 开发、数据分析、后端服务等场景以轻量、高效、易用、免费社区版为核心特点。下面从核心概念、基础操作、核心特性三个维度帮你快速入门。(1)关系型数据库的核心逻辑MySQL 基于「关系模型」组织数据简单理解数据库Database存放数据的「仓库」一个 MySQL 服务可以创建多个数据库比如电商系统的ecommerce库、用户系统的user_center库。表Table数据库的「基本存储单元」类似 Excel 表格每行是一条数据每列是一个字段比如user表包含id、name、age列。行Row/ 记录Record表中的一条数据比如id1, name张三, age20。列Column/ 字段Field表的属性比如age列专门存年龄有数据类型限制比如整数。数据类型列的「数据规则」MySQL 常用类型数值INT整数、FLOAT/DOUBLE浮点数、DECIMAL高精度小数如金额字符串VARCHAR(n)可变长度字符串如姓名、CHAR(n)固定长度如手机号、TEXT长文本如简介日期DATE日期如 2025-12-14、DATETIME日期 时间如 2025-12-14 10:00:00其他BOOLEAN布尔值、ENUM枚举如性别男 / 女。主键Primary Key, PK唯一标识表中每行数据的列比如id列不能重复、不能为空。外键Foreign Key, FK关联两个表的字段比如订单表order的user_id关联用户表user的id保证订单归属有效用户。(2)MySQL 的架构简单版客户端操作 MySQL 的工具如 Navicat、DBeaver 可视化工具或命令行mysql客户端服务端MySQL 核心程序负责接收请求、处理数据、管理存储存储层数据最终存在磁盘文件如.ibd文件支持多种存储引擎最常用InnoDB。(3)MySQL 核心特性为什么用它开源免费社区版完全免费企业版提供商业支持降低成本跨平台支持 Windows、Linux、macOS 等主流系统高性能针对读写场景优化InnoDB引擎支持事务、行级锁适合高并发易用性SQL 语法简单配套工具丰富可视化工具、命令行、编程语言驱动扩展性支持主从复制、分库分表可应对大数据量、高并发场景生态完善几乎所有编程语言Python/Java/PHP/Go都有成熟的 MySQL 驱动与框架Spring Boot、Django无缝集成。(4)新手注意事项慎用删除 / 修改DROP/DELETE/UPDATE无 WHERE 子句会导致数据全丢操作前先备份主键必设每张表建议设置主键如自增 ID便于数据定位和关联数据类型匹配比如手机号用VARCHAR不是 INT避免开头 0 丢失金额用DECIMAL不是 FLOAT避免精度丢失规范命名库 / 表 / 字段用小写下划线分隔如user_order避免关键字如order需加反引号order。2.初步了解sql注入漏洞SQL 注入SQL Injection简称 SQLi是最常见、最危险的 Web 安全漏洞之一本质是攻击者通过在用户输入中插入恶意 SQL 代码欺骗数据库执行非预期的操作最终窃取、篡改甚至删除数据库中的敏感数据甚至控制整个服务器。1为什么会出现 SQL 注入SQL 注入的根源是程序未对用户输入做严格校验直接将用户输入拼接到 SQL 语句中执行。举个通俗例子正常业务逻辑中用户登录时输入「用户名」和「密码」程序会拼接成如下 SQL 语句查询数据库-- 预期的正常 SQL用户输入用户名zhangsan密码123456 SELECT * FROM user WHERE username zhangsan AND password 123456;但如果攻击者在用户名输入框中输入zhangsan OR 11拼接后的 SQL 就会变成-- 恶意拼接后的 SQL SELECT * FROM user WHERE username zhangsan OR 11 AND password 123456;由于11永远为真这条 SQL 会查询出所有用户数据攻击者无需正确密码就能登录。核心问题总结程序把「用户可控的输入」直接作为 SQL 语句的一部分输入中包含 SQL 语法关键字如OR、AND、UNION、DROP等改变了原 SQL 的执行逻辑。2SQL 注入的危害从轻度到重度危害逐级递增数据泄露窃取用户手机号、密码、银行卡、个人信息等敏感数据数据篡改修改数据库中的数据如篡改订单金额、用户等级数据销毁删除表、清空数据库甚至通过DROP DATABASE销毁整个库权限提升通过注入获取数据库 root 权限进而控制服务器如读取服务器文件、执行系统命令合规风险违反《网络安全法》《个人信息保护法》企业面临罚款、追责。3防护 SQL 注入防护的核心思路永远不要相信用户的输入杜绝「直接拼接用户输入到 SQL 语句」。以下是从易到难的防护手段使用参数化查询预处理语句【最有效】这是防护 SQL 注入的黄金法则原理是将 SQL 语句的「结构」和「数据」分离用户输入仅作为「数据参数」传入不会被解析为 SQL 语法。示例Python pymysql# 错误方式直接拼接有注入风险 sql fSELECT * FROM user WHERE username {username} # 正确方式参数化查询? 是占位符不同语言占位符可能不同%s、:name 等 sql SELECT * FROM user WHERE username %s cursor.execute(sql, (username,)) # 第二个参数是参数列表自动转义输入示例Java JDBC// 错误方式拼接字符串 String sql SELECT * FROM user WHERE username username ; // 正确方式PreparedStatement预处理语句 String sql SELECT * FROM user WHERE username ?; PreparedStatement pstmt conn.prepareStatement(sql); pstmt.setString(1, username); // 绑定参数自动转义 ResultSet rs pstmt.executeQuery();参数化查询会自动对用户输入中的特殊字符如单引号、注释符--进行转义从根本上杜绝注入。对用户输入做「白名单校验」推荐或「黑名单过滤」辅助白名单仅允许符合规则的输入如用户 ID 只能是数字、手机号只能是 11 位数字不符合则直接拒绝黑名单过滤 / 转义 SQL 关键字如OR、AND、UNION、DROP、--、;等但黑名单易被绕过如大小写混合Or、aNd仅作为辅助手段。最小权限原则数据库操作账号仅赋予「必要的权限」避免使用 root 等高权限账号比如查询用户数据的接口仅赋予SELECT权限即使被注入也无法执行DROP、UPDATE等操作禁止数据库账号拥有服务器系统权限如读取 / 写入服务器文件。使用 ORM 框架ORM对象关系映射框架如 Python 的 SQLAlchemy、Java 的 MyBatis/hibernate会自动使用参数化查询避免手动拼接 SQL降低注入风险。示例Python SQLAlchemyfrom sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker engine create_engine(mysqlpymysql://user:passwordlocalhost/test_db) Session sessionmaker(bindengine) session Session() # ORM 查询自动参数化无注入风险 user session.query(User).filter(User.username username).first()开启数据库防护机制启用 MySQL 的sql_mode严格模式限制危险语法执行使用 Web 应用防火墙WAF如阿里云 WAF、腾讯云 WAF可拦截常见的 SQL 注入攻击请求定期审计 SQL 日志发现异常的 SQL 执行行为。4新手易踩的坑「仅过滤单引号」就认为安全攻击者可通过编码如 URL 编码%27、大小写混合绕过对数字型参数放松警惕比如id1 OR 11无需单引号直接拼接仍会注入依赖前端校验前端校验可被轻易绕过如禁用 JS、抓包改参数必须做后端校验认为「小众框架 / 语言」无注入风险只要存在手动拼接 SQL无论什么语言PHP/Java/Python/Go都可能出现注入。总结SQL 注入的本质是「输入未校验 SQL 拼接」防护的核心是使用参数化查询辅以输入校验、最小权限、WAF 等手段。作为开发者入门阶段需牢记永远不要手动拼接用户输入到 SQL 语句中这是避免 SQL 注入的第一道也是最重要的防线。3.练习sql语句方式一首先要启动小皮中的mysql服务然后找到它所在的目录输入cmd 来打开终端输入mysql -uroot -p-p后的密码即为小皮中设置的密码详情请查找“终端中使用mysql数据库的基本操作”方式二:要先下载navicatNavicat Premium 16 保姆级手把手 安装教程包含下载、安装、授权附安装包-CSDN博客练习数据准备将下方语句一一执行若用navicat可一键复制全选后点击运行-- 创建数据库如果不存在CREATE DATABASE IF NOT EXISTS student_grade_db;USE student_grade_db;-- 创建课程表5门课覆盖常见科目CREATE TABLE courses (id INT AUTO_INCREMENT PRIMARY KEY,course_name VARCHAR(50) NOT NULL);-- 创建学生表30个真实感名字班级年龄CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,age INT NOT NULL,gender VARCHAR(10) NOT NULL,class VARCHAR(20) NOT NULL);-- 创建成绩表关联学生和课程150条数据CREATE TABLE scores (id INT AUTO_INCREMENT PRIMARY KEY,student_id INT NOT NULL,course_id INT NOT NULL,score DECIMAL(5,2) NOT NULL,FOREIGN KEY (student_id) REFERENCES students(id),FOREIGN KEY (course_id) REFERENCES courses(id));-- 插入课程数据5门课基础科目全齐INSERT INTO courses (course_name) VALUES(Mathematics),(Chinese),(English),(Physics),(Chemistry);-- 插入30个学生数据名字/年龄/性别/班级随机分配真实不塑料INSERT INTO students (name, age, gender, class) VALUES(张明, 19, Male, Computer Science 1),(李华, 20, Female, Computer Science 2),(王芳, 18, Female, IT Engineering 1),(刘伟, 21, Male, Computer Science 1),(陈静, 19, Female, IT Engineering 2),(杨洋, 20, Male, Computer Science 2),(黄丽, 19, Female, Computer Science 1),(周强, 22, Male, IT Engineering 1),(吴敏, 20, Female, Computer Science 2),(徐娜, 18, Female, IT Engineering 2),(孙浩, 20, Male, Computer Science 1),(马超, 21, Male, Computer Science 2),(朱婷, 19, Female, IT Engineering 1),(胡杰, 20, Male, IT Engineering 2),(林雪, 18, Female, Computer Science 1),(何亮, 22, Male, Computer Science 2),(高峰, 19, Male, IT Engineering 1),(郭静, 20, Female, IT Engineering 2),(韩梅, 19, Female, Computer Science 1),(谢敏, 20, Female, Computer Science 2),(邓伟, 21, Male, IT Engineering 1),(冯丽, 18, Female, IT Engineering 2),(曾强, 20, Male, Computer Science 1),(彭华, 19, Female, Computer Science 2),(颜强, 21, Male, IT Engineering 1),(潘丽, 20, Female, IT Engineering 2),(杜明, 22, Male, Computer Science 1),(丁芳, 19, Female, Computer Science 2),(董强, 20, Male, IT Engineering 1),(赵敏, 21, Female, IT Engineering 2);-- 插入150条成绩数据每学生5门课分数有高有低真实到能编故事-- 重点覆盖增删改查所有场景比如查“物理不及格的”、按分数排序等INSERT INTO scores (student_id, course_id, score) VALUES(1,1,85.5), (1,2,90.0), (1,3,78.5), (1,4,82.0), (1,5,88.5), -- 张明学霸型(2,1,76.0), (2,2,85.0), (2,3,82.0), (2,4,79.5), (2,5,81.0), -- 李华中等偏上(3,1,65.0), (3,2,70.0), (3,3,68.0), (3,4,62.0), (3,5,67.0), -- 王芳挂科预警(4,1,92.0), (4,2,88.0), (4,3,85.0), (4,4,90.0), (4,5,89.0), -- 刘伟卷王(5,1,72.5), (5,2,75.0), (5,3,78.0), (5,4,74.5), (5,5,76.0), -- 陈静稳如老狗(6,1,80.0), (6,2,84.0), (6,3,83.0), (6,4,81.0), (6,5,82.5), -- 杨洋进步中(7,1,77.5), (7,2,81.0), (7,3,79.5), (7,4,76.0), (7,5,78.5), -- 黄丽小透明(8,1,88.0), (8,2,92.0), (8,3,89.0), (8,4,91.0), (8,5,90.0), -- 周强大佬(9,1,74.0), (9,2,78.0), (9,3,76.5), (9,4,73.0), (9,5,75.0), -- 吴敏努力型(10,1,68.0), (10,2,72.0), (10,3,70.0), (10,4,65.0), (10,5,69.0), -- 徐娜差点挂科(11,1,83.0), (11,2,86.0), (11,3,84.0), (11,4,82.0), (11,5,85.0), -- 孙浩中上(12,1,79.0), (12,2,82.0), (12,3,80.0), (12,4,78.5), (12,5,81.0), -- 马超稳(13,1,71.5), (13,2,74.0), (13,3,72.5), (13,4,70.0), (13,5,73.0), -- 朱婷小进步(14,1,81.0), (14,2,83.0), (14,3,82.5), (14,4,80.0), (14,5,84.0), -- 胡杰卷中卷(15,1,69.5), (15,2,73.0), (15,3,71.0), (15,4,67.5), (15,5,70.5), -- 林雪差点挂科(16,1,90.0), (16,2,93.0), (16,3,91.0), (16,4,92.0), (16,5,94.0), -- 何亮天花板(17,1,75.0), (17,2,77.0), (17,3,76.0), (17,4,74.0), (17,5,78.0), -- 高峰中等(18,1,82.0), (18,2,85.0), (18,3,83.0), (18,4,81.5), (18,5,84.5), -- 郭静优秀(19,1,78.0), (19,2,80.0), (19,3,79.0), (19,4,77.0), (19,5,81.0), -- 韩梅小能手(20,1,84.5), (20,2,87.0), (20,3,86.0), (20,4,85.0), (20,5,88.0), -- 谢敏学霸(21,1,67.0), (21,2,71.0), (21,3,69.0), (21,4,65.0), (21,5,68.0), -- 邓伟危险边缘(22,1,73.0), (22,2,76.0), (22,3,74.0), (22,4,72.0), (22,5,75.0), -- 冯丽稳(23,1,86.0), (23,2,89.0), (23,3,87.0), (23,4,85.0), (23,5,88.0), -- 曾强卷王(24,1,77.5), (24,2,80.0), (24,3,78.5), (24,4,76.5), (24,5,79.5), -- 彭华中等偏上(25,1,89.0), (25,2,91.0), (25,3,88.5), (25,4,90.0), (25,5,92.0), -- 颜强大佬(26,1,74.5), (26,2,77.5), (26,3,75.0), (26,4,73.5), (26,5,76.5), -- 潘丽小进步(27,1,92.5), (27,2,95.0), (27,3,93.0), (27,4,94.0), (27,5,96.0), -- 杜明天花板2号(28,1,80.5), (28,2,83.5), (28,3,82.0), (28,4,81.0), (28,5,84.0), -- 丁芳优秀(29,1,76.0), (29,2,79.0), (29,3,77.5), (29,4,75.0), (29,5,78.0), -- 董强中等(30,1,83.0), (30,2,86.0), (30,3,84.5), (30,4,82.5), (30,5,85.5); -- 赵敏稳如老狗4.搭建sql靶场网址入门网安方向的下载与安装-CSDN博客在里面的4.2就已经搞过了大家可以去看一下