Web安全
基础漏洞
01前端基础【HTML】
02前端基础【CSS】
03后端基础【PHP速通】
04后端基础【PHP面向对象】
05MySQL基础操作
06前后端联动【代码练习】
07SQL注入【1】
07SQL 注入【2】
08SQL注入 Labs
08SQL注入速查表
09XSS
09跨站脚本攻击【XSS】
09XSS Labs
10跨站请求伪造【CSRF】
11服务器端请求伪造【SSRF】
12XML 外部实体注入【XXE】
13代码执行漏洞
14命令执行漏洞
15文件包含漏洞
16文件上传漏洞
17反序列化漏洞
18业务逻辑漏洞
19未授权访问漏洞集合
20跨源资源共享【CORS】
21SSTI模板注入
22并发漏洞
23点击劫持【Clickjacking 】
24请求走私
25路径遍历
26访问控制
27身份验证漏洞
28WebSocket
29Web缓存中毒
30HTTP 主机头攻击
31信息泄露漏洞
32原型污染
33NoSQL注入
API 安全
01web应用程序
02HTTP协议
03API概述
04分类类型
05交换格式
06身份验证
07常见API漏洞
08crAPI靶场
09JWT
10OAuth 2.0身份验证
11GraphQL【1】
11GraphQL【2】
12DVGA靶场
13服务器端参数污染
14API文档
15API Labs
16OAuth Labs
17GraphQL API Labs
18JWT Labs
小程序
小程序抓包
数据库
MySQL
Oracle
MongoDB
Redis
PostgreSQL
SQL server
中间件
Nginx
Apache HTTP Server
IIS
Tomcat
框架
ThinkPHP
Spring
Spring Boot
Django
访问控制
-
+
首页
框架
## 概述 **Web 应用程序框架** 是一个软件框架,旨在简化 Web 应用程序的开发、部署和维护过程。它封装了 Web 开发中重复、复杂的底层逻辑(如 HTTP 请求处理、数据库交互、路由分发等),让开发者无需从零构建基础架构,可专注于业务逻辑的实现。 可以将它想象成一个 **“脚手架”或“工具箱”**: - **脚手架**:它提供了一个基础结构,你的代码在此基础上构建,确保项目的组织性和一致性。 - **工具箱**:它提供了各种现成的工具(如图书管理、用户认证、数据库交互),你只需要按需使用,而不用自己从头制造每一个螺丝和扳手。 ## 核心价值 **提高开发效率**:通过提供预构建的组件和工具,避免了“重复发明轮子”,开发者可以专注于实现业务逻辑而非底层技术细节。 **促进代码组织和可维护性**:大多数框架强制或鼓励使用特定的架构模式(如 MVC),这使得代码结构清晰、模块化,便于团队协作和后期维护。 **增强安全性和鲁棒性**:成熟的框架内置了应对常见安全威胁(如 SQL 注入、跨站脚本、CSRF 等)的机制,帮助开发者编写更安全的代码,减少了因疏忽导致的安全漏洞。 **确保可扩展性**:良好的框架设计允许应用程序随着用户增长和功能增加而平稳扩展。 **便于测试**:框架通常提供良好的支持来编写单元测试和功能测试,保障应用程序的质量和稳定性。 ## 分类 根据不同维度,Web 框架可分为多个类别。 ### 按 “前后端职责” 分类 核心区别是框架是否处理前端页面渲染。 | 类别 | 核心职责 | 适用场景 | 代表框架 | | ------------ | ------------------------------------------------------------ | --------------------------------------- | ------------------------------------------------------------ | | **后端框架** | 处理 HTTP 请求、业务逻辑、数据库交互,返回数据(JSON/XML) | 前后端分离架构(前端用 Vue/React) | Spring Boot、Django、Flask | | **前端框架** | 负责浏览器端页面渲染、用户交互、状态管理,依赖后端 API | 复杂交互的单页应用(SPA) | Angular、Vue.js、React(注:React 是 “库”,需结合 Router/Redux 构成框架能力) | | **全栈框架** | 同时处理后端逻辑和前端渲染,支持 “同构渲染”(提升 SEO 和首屏速度) | 需兼顾性能与 SEO 的应用(如博客、电商) | Next.js(基于 React)、Nuxt.js(基于 Vue)、Django(自带模板引擎) | ### 按 “架构模式” 分类 框架通过预设架构模式规范代码分层,最主流的是MVC 及其变体: | 架构模式 | 核心分层与职责 | 代表框架 | | ---------------- | ------------------------------------------------------------ | ------------------------------------ | | **MVC** | - Model(模型):处理数据逻辑(数据库交互、数据验证)<br />- View(视图):展示数据(页面渲染)<br />- Controller(控制器):接收请求、调用 Model、返回 View | Django、Spring MVC、Ruby on Rails | | **MVP** | - Model(模型):数据逻辑 <br />- View(视图):用户交互(触发事件) <br />- Presenter(Presenter):连接 View 与 Model(处理业务逻辑,无 View 直接依赖) | AngularJS(早期)、GWT | | **MVVM** | - Model(模型):数据逻辑 <br />- View(视图):页面渲染(绑定 ViewModel 数据) <br />- ViewModel(视图模型):转换 Model 数据为 View 可用格式,处理 View 事件 | Vue.js、React(结合 Hooks)、Angular | | **RESTful 框架** | 专门适配 RESTful API 设计(基于 HTTP 方法:GET/POST/PUT/DELETE,无视图层) | Express.js、FastAPI、Spring WebFlux | ### 按 “语言生态” 分类 框架与编程语言强绑定,不同语言有其主导框架: **Python生态** | 框架 | 定位 | 核心特点 | 适用场景 | | ------- | ------------------------- | ------------------------------------------------------------ | ------------------------------------- | | Django | 全栈 / 后端框架(大而全) | 自带 ORM、Admin 后台、用户认证、安全防护;遵循 MVC;“开箱即用” | 中大型项目(电商、内容管理系统) | | Flask | 后端框架(轻量级) | 仅保留核心功能(路由、模板);依赖第三方插件扩展(如`flask-sqlalchemy`) | 小型项目、API 服务、原型开发 | | FastAPI | 后端框架(高性能) | 基于 Python 类型提示;自动生成 API 文档(Swagger);支持异步;性能接近 Node.js/Go | 高性能 API 服务(如物联网、实时数据) | **Java生态** | 框架 | 定位 | 核心特点 | 适用场景 | | ------------ | ------------------ | ------------------------------------------------------------ | ------------------------------------ | | Spring Boot | 后端框架(企业级) | 简化 Spring 配置;内置 Tomcat;支持自动装配;生态庞大 | 企业级应用、微服务(单体起步) | | Spring Cloud | 微服务框架 | 基于 Spring Boot;提供服务注册 / 发现、配置中心、网关等组件 | 分布式微服务系统(如金融、电商平台) | | Jakarta EE | 企业级框架(规范) | 原 Java EE;定义标准化 API(如 Servlet、JPA);需依赖厂商实现(如 TomEE、WildFly) | 传统企业级应用(需长期维护) | **PHP 生态** | 框架 | 定位 | 核心特点 | 适用场景 | | -------- | ----------------------- | ------------------------------------------------------------ | ---------------------------- | | Laravel | 全栈 / 后端框架 | 优雅语法;强大 ORM(Eloquent);支持队列、缓存、事件;生态完善 | 中大型 PHP 应用(电商、CMS) | | ThinkPHP | 全栈 / 后端框架(国产) | 轻量级;中文文档;支持多数据库;适合快速开发 | 中小型项目、国内企业应用 | | Symfony | 组件化框架 | 可按需组合组件(如路由、表单);高可定制性 | 需灵活扩展的企业级应用 | **JavaScript/Node.js 生态** | 框架 | 定位 | 核心特点 | 适用场景 | | ---------- | ---------------------- | ------------------------------------------------------------ | --------------------------------------- | | Express.js | 后端框架(轻量级) | 最小化核心;中间件机制灵活;学习成本低 | 小型 API 服务、前后端分离后端 | | NestJS | 后端框架(企业级) | 基于 TypeScript;支持依赖注入、模块化;借鉴 Spring 设计 | 中大型 Node.js 应用(如微服务、BFF 层) | | Next.js | 全栈框架(React 生态) | 支持 SSR(服务端渲染)/SSG(静态生成);提升 SEO 和首屏速度;内置路由 | 博客、电商、内容平台(需 SEO) | ## 关键组件 无论框架类型如何,核心组件的功能是相通的,这些组件构成了框架的 “骨架”: **1. 路由系统(Routing)** 功能:将 HTTP 请求(如GET /api/users)映射到对应的业务逻辑处理函数(控制器 / 视图函数)。 示例: - Django 中通过urls.py定义路由:path('api/users/', views.user_list) - Express.js 中通过app.get('/api/users', (req, res) => { ... })绑定路由 **2. 模板引擎(Template Engine)** 功能:将 “静态模板” 与 “动态数据” 结合,生成最终的 HTML 页面(仅后端框架 / 全栈框架具备)。 核心能力:支持变量渲染、循环 / 条件判断、模板继承(减少重复 HTML 代码)。 示例: - Django 模板:{% for user in users %} \<li>{{ user.name }}\</li> {% endfor %} - Thymeleaf(Spring Boot):\<li th:text="${user.name}">\</li> **3. 对象关系映射(ORM)** 功能:将数据库表结构映射为编程语言中的 “对象”,让开发者用 “面向对象” 的方式操作数据库(无需手动编写 SQL)。 优势:跨数据库兼容(如从 MySQL 切换到 PostgreSQL 无需修改代码)、防 SQL 注入。 示例: - Django ORM 查询用户列表:User.objects.all()(等价于SELECT * FROM user) - Laravel ORM:User::where('age', '>', 18)->get() **4. 中间件(Middleware)** 功能:在 “请求到达控制器” 和 “响应返回客户端” 之间插入自定义逻辑,实现通用功能的复用。 常见用途:身份验证(如 JWT 验证)、日志记录、跨域处理(CORS)、请求参数过滤。 示例: - Express.js 中间件:app.use((req, res, next) => { console.log(req.url); next(); }) - Spring Boot 中间件:通过@Component实现HandlerInterceptor **5. 会话管理(Session Management)** 功能:跟踪用户会话状态(如登录状态),支持多种存储方式(内存、数据库、Redis)。 示例: - Django 默认使用数据库存储 Session,可配置为 Redis:SESSION_ENGINE = 'django_redis.sessions.RedisSessionStore' - PHP Laravel:session()->put('user_id', $user->id)(存储会话);session('user_id')(获取会话) **6. 表单处理与验证(Form Handling & Validation)** 功能:接收前端表单数据,自动验证合法性(如手机号格式、密码强度),返回错误信息。 示例: - FastAPI 通过 Pydantic 模型验证: ```python from pydantic import BaseModel class UserForm(BaseModel): name: str age: int = Field(ge=0, le=120) # 年龄必须0-120 ``` - Spring Boot 通过@Valid注解:public String save(@Valid UserForm form, BindingResult result)
毛林
2025年9月12日 20:27
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码