news 2026/8/1 15:13:32

第三周web作业

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第三周web作业

1.初步了解数据库(MySQL)

1. 数据库核心概念

数据库(Database)是按一定规则组织、存储和管理数据的仓库,MySQL 是最流行的开源关系型数据库(RDBMS),基于「表」结构存储数据,核心特点:

  • 关系型:数据以行(记录)、列(字段)的二维表组织,表之间可通过「主键 / 外键」建立关联;
  • 开源免费:社区版完全免费,广泛用于中小型项目;
  • 跨平台:支持 Windows、Linux、macOS 等;
  • 客户端 - 服务端架构:MySQL 服务端运行在服务器,客户端(如 Navicat、命令行)通过网络连接操作。
2. MySQL 核心组件
组件说明
数据库(DB)一个存储多个表的容器(如test_db
表(Table)数据的基本存储单元(如user表)
字段(Column)表的列(如idusernamepassword
记录(Row)表的行(一条用户数据)
主键(PK)唯一标识记录的字段(如id自增)
索引(Index)加速查询的结构(如给username建索引)
-- 1. 登录MySQL(默认端口3306) mysql -u root -p # 输入密码后登录 -- 2. 查看所有数据库 SHOW DATABASES; -- 3. 创建数据库 CREATE DATABASE test_db DEFAULT CHARSET utf8mb4; -- 4. 使用数据库 USE test_db; -- 5. 创建表(用户表示例) CREATE TABLE user ( id INT PRIMARY KEY AUTO_INCREMENT, -- 自增主键 username VARCHAR(50) NOT NULL UNIQUE, -- 用户名唯一 password VARCHAR(100) NOT NULL, -- 密码 create_time DATETIME DEFAULT NOW() -- 创建时间默认当前 ); -- 6. 查看表结构 DESC user; -- 7. 删除数据库/表(谨慎使用) DROP DATABASE test_db; DROP TABLE user;
2.初步了解sql注入漏洞
1. 什么是 SQL 注入?

SQL 注入(SQL Injection)是攻击者通过在用户输入中插入恶意 SQL 语句,欺骗数据库执行非预期操作的漏洞。核心原因:程序未对用户输入做严格过滤,直接拼接 SQL 语句执行

2. 漏洞原理(示例)

假设有一个用户登录功能,后端代码(PHP 示例)未过滤输入:

php

运行

// 危险代码:直接拼接用户输入 $username = $_POST['username']; $password = $_POST['password']; $sql = "SELECT * FROM user WHERE username='$username' AND password='$password'"; mysqli_query($conn, $sql);

攻击者在用户名输入框输入:admin' OR '1'='1,拼接后的 SQL 变成:

sql

SELECT * FROM user WHERE username='admin' OR '1'='1' AND password='任意值';

由于'1'='1'恒成立,攻击者无需正确密码即可登录。

3. SQL 注入的危害
  • 窃取数据库数据(用户账号、密码、敏感信息);
  • 修改 / 删除数据库数据(如删表、改密码);
  • 提权操作(如获取服务器权限);
  • 拖库(导出整个数据库)。
4. 防御措施
  • 参数化查询(预编译):使用?占位符,避免直接拼接(推荐);

    php

    运行

    // 安全代码:参数化查询 $sql = "SELECT * FROM user WHERE username=? AND password=?"; $stmt = mysqli_prepare($conn, $sql); mysqli_stmt_bind_param($stmt, "ss", $username, $password); mysqli_stmt_execute($stmt);
  • 输入过滤 / 转义(如 MySQL 的mysqli_real_escape_string);
  • 最小权限原则(数据库账号仅赋予必要权限);
  • 使用 WAF(Web 应用防火墙)拦截注入攻击。

3.练习sql语句

1. 新增数据(INSERT)

sql

-- 插入单条数据 INSERT INTO user (username, password) VALUES ('zhangsan', '123456'); -- 插入多条数据 INSERT INTO user (username, password) VALUES ('lisi', '654321'), ('wangwu', 'abc123');
2. 查询数据(SELECT)

sql

-- 查询所有字段、所有记录 SELECT * FROM user; -- 查询指定字段 SELECT id, username FROM user; -- 条件查询(WHERE) SELECT * FROM user WHERE username='zhangsan'; -- 模糊查询(LIKE):查询用户名含「li」的用户 SELECT * FROM user WHERE username LIKE '%li%'; -- 排序(ORDER BY):按id降序 SELECT * FROM user ORDER BY id DESC; -- 限制结果数量(LIMIT):只查前2条 SELECT * FROM user LIMIT 2; -- 去重(DISTINCT):假设存在重复用户名时 SELECT DISTINCT username FROM user;
3. 修改数据(UPDATE)

sql

-- 修改指定用户的密码(务必加WHERE,否则改全表!) UPDATE user SET password='newpass123' WHERE username='zhangsan'; -- 同时修改多个字段 UPDATE user SET password='111111', create_time='2025-01-01 00:00:00' WHERE id=2;
4. 删除数据(DELETE)

sql

-- 删除指定记录(务必加WHERE,否则删全表!) DELETE FROM user WHERE id=3; -- 清空表(保留表结构,自增主键重置) TRUNCATE TABLE user; -- 比DELETE * 更高效,但不可回滚
5. 进阶练习(聚合 / 关联查询)

sql

-- 统计用户总数 SELECT COUNT(*) AS total FROM user; -- 按条件统计(密码长度>6的用户数) SELECT COUNT(*) FROM user WHERE LENGTH(password) > 6; -- 多表关联查询(假设有`order`表,关联user表查用户订单) -- 先创建order表: CREATE TABLE `order` ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT, order_no VARCHAR(50), FOREIGN KEY (user_id) REFERENCES user(id) ); -- 关联查询:查用户名+订单号 SELECT u.username, o.order_no FROM user u JOIN `order` o ON u.id = o.user_id;

(4)靶场搭建

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/1 14:37:59

org.jetbrains.annotations的@Nullable 学习

Nullable 是 JetBrains 提供的一套用于 Java 静态分析的注解(annotations)之一,属于 org.jetbrains.annotations 包。它主要用于标注一个变量、参数、方法返回值等可能为 null,从而帮助 IDE(如 IntelliJ IDEA&#xff…

作者头像 李华
网站建设 2026/7/28 4:29:25

计算机毕业设计springboot计算机硬件自配系统 基于Spring Boot的计算机硬件配置管理系统设计与实现 Spring Boot架构下的计算机硬件自选系统开发

计算机毕业设计springboot计算机硬件自配系统839019 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着信息技术的飞速发展,计算机硬件市场的复杂性和多样性不断增加…

作者头像 李华
网站建设 2026/7/30 21:13:42

【信创】中间件对比

定位说明:本文面向企业架构师、后端研发负责人、信创项目技术选型人员,系统梳理中间件的分类体系、国外主流产品格局,以及国产信创中间件的对标与落地实践建议,适合作为技术博客或内部技术白皮书使用。一、中间件的核心定位与价值…

作者头像 李华
网站建设 2026/8/1 14:03:43

傅里叶变换小波变换

在信号分析领域,我们经常面对这样的问题:信号中有哪些频率成分?这些频率在什么时候出现?是否发生了突变?围绕这个问题,形成了三种非常经典、也是工程中最常用的分析工具: 傅里叶变换&#xff08…

作者头像 李华
网站建设 2026/7/30 1:31:12

智能桑拿房首选:水管家集成系统如何提升体验?

2025水质综合处理器桑拿智能水管家行业权威榜单极致体验与降本增效如何平衡?看头部品牌如何重塑行业标准引言随着浴室行业竞争白热化,消费者对水质体验的敏感度持续攀升——女性用户吐槽漂浮药味、年轻客群对水质浑浊率杀评、家庭客群则因孩子皮肤不适直…

作者头像 李华
网站建设 2026/7/30 20:01:55

最简单的LangChain和RAG

ollama的API:https://docs.ollama.com/api/ps ollama的API:https://github.com/ollama/ollama/blob/main/docs/api.md?utm_sourcechatgpt.com Ollama API ├── 推理类(最常用) │ ├── /api/generate ← 单轮生成 │ …

作者头像 李华