域名差异
主站
- 主站通常是指一个网站体系中的核心站点
- 主站的域名通常是最简洁、最具代表性的,是整个网站体系的基础域名,例如example.com
- 视频案例:www.baidu.com
分站(子域名)
-
分站的域名可能会在主站域名的基础上添加特定的标识,如地区代码或业务板块名称,如east.example.com 或 business.example.com
-
子域名模式又叫二级域名
- 子域名搭建出来的模式 前缀+网址
- 例子1
- 主站(www.domain.com)
- 论坛(bbs.domain.com)
- 后台(admin.domain.com)
- API接⼝(api.domain.com)
- 例子2
- example.com是主站
- blog.example.com用于博客
- shop.example.com用于在线商店
- m.example.com用于移动版网站
- 例子1
- 子域名搭建出来的模式 前缀+网址
-
实现原理
- 通过DNS解析将不同⼦域名指向同⼀IP,由Web服务器根据Host头区分站点
- IIS中配置不同⽹站绑定对应⼦域名和⽬录
- 示例:www访问博客系统,xiaodi访问企业CMS系统
-
视频案例:以百度为案例
-
安全意义
- 每个⼦域名对应独⽴应⽤
- 任意⼦域程序漏洞都会影响主站安全
- 信息收集时需要全⾯检测所有⼦域名
端口站
-
端口站是通过服务器端口搭建多个网站的技术
-
端口站的域名在基础域名后会加上端口号,以冒号分隔,如example.com:8080
-
视频案例:www.baidu.com:80

-

-
不同端口 代码也可能不同程序
-
通过不同端口访问同一台服务器上的不同程序,如80端口和88端口
-
端⼝作⽤:不同端⼝可承载独⽴⽹站应⽤
-
访问特性:80端⼝作为HTTP默认端⼝,访问时可省略端⼝号(如http://example.com与http://example.com:80等效)
-
安全意义:同⼀服务器通过不同端⼝部署多个⽹站时,每个端⼝对应独⽴攻击⾯,如演示中88端⼝与80端⼝运⾏不同程序
目录站
-
目录站(目录模式)是一种网站架构,它以分类目录的形式组织和展示信息
-
目录站通过主站域名加上路径来表示,例如example.com/directory,它是主站域名下的一个特定路径,以展示特定内容或功能
-
实现⽅式:在⽹站根⽬录下创建⼦⽬录(如/blog)部署另⼀套独⽴程序
-
识别特征:通过URL路径区分不同应⽤
-
例:
-

- 目录不同 其代码程序也可能不同

- 目录不同 其代码程序也可能不同
子站
-
子站域名是域名体系中的一部分,是在主域名下进一步细分的域名形式。
-
子站的域名一般是主站域名加上特定的子域名前缀
-
如:
- en.example.com(英文)
- zh.example.com(中文)
-
视频案例:test01.xiaodi8.com

源码差异
结构
源码目录结构对应
后台目录
- 后台目录是存放服务器端程序和相关资源的目录
- 后台目录示例
文件目录
- 文件目录包含各种类型的文件,如文本文件、图像文件、音频文件、视频文件等
- 文件目录示例
逻辑目录
- 逻辑目录并非实际的物理目录,而是一种在代码层面或业务层面进行逻辑组织的方式
- 后端 Web 服务项目的逻辑目录示例
前端目录
- 前端目录主要用于存放与用户界面相关的文件和资源,包括 HTML 文件、CSS 文件、JavaScript 文件、图像文件等
- 前端目录示例
数据目录
- 数据目录用于存储应用程序运行过程中产生或需要使用的数据。这些数据可以是文本文件、数据库文件、日志文件等
- 数据目录示例
配置文件
-
配置文件用于存储应用程序的各种配置信息,如数据库连接信息、端口号、字符集等
-
Python Flask 应用配置文件示例
-

语言
源码语言类型
ASP(Active Server Pages)
- ASP 是微软开发的服务器端脚本环境,可将 HTML、脚本、ActiveX 组件组合成一个能在服务器上运行的程序,生成动态 Web 页面。它使用 VBScript 或 JScript 作为脚本语言,代码嵌入在 HTML 文件中
- ASP 示例
ASPX
- ASPX 是 ASP.NET 技术的一部分,是基于.NET 框架的服务器端 Web 开发技术,它结合了 HTML、CSS、JavaScript 和服务器端代码(如 C# 或 VB.NET),提供了丰富的服务器控件和事件驱动的编程模型
- ASPX 示例
PHP
- PHP 是一种广泛使用的开源服务器端脚本语言,特别适合 Web 开发。它可以嵌入到 HTML 中,也可以独立运行。PHP 支持多种数据库,如 MySQL、Oracle 等,并且有丰富的扩展库
- PHP 示例
Java
- Java是一种广泛使用的高级编程语言,具有跨平台、面向对象、分布式、多线程等特性
- Java示例
Python
- Python 是一种简洁、易读的高级编程语言,在 Web 开发中也有广泛应用。常用的 Python Web 框架有 Django、Flask 等
- Flask 示例
Go
- Go 是一种开源的编程语言,具有高效、简洁、并发性能好等特点。在 Web 开发中,Go 有自己的标准库和一些第三方框架,如 Gin、Echo 等
- Go Web 示例
Javascript
- JavaScript 是一种广泛用于 Web 开发的脚本语言,可在浏览器端和服务器端运行。在浏览器端,JavaScript 用于实现交互效果、动态页面更新等;在服务器端,Node.js 使 JavaScript 可以用于构建服务器端应用程序
- Node.js 示例
框架
语言框架组件
PHP:
- Thinkphp
- ThinkPHP是一个轻量级的中型框架,从Java的Struts结构移植过来的中文PHP开发框架。它采用面向对象的开发结构和MVC模式,还模拟实现了Struts的标签库
- Laravel
- Laravel是一套简洁、优雅的PHP Web开发框架。它具有丰富的功能和良好的代码结构,提供了诸如路由、数据库迁移、认证、队列等强大的功能组件,能帮助开发者快速构建复杂的Web应用程序
- YII
- Yii是一个高性能的PHP框架,适用于开发大型Web应用。它具备强大的缓存支持、高效的代码生成工具和丰富的扩展库。Yii遵循MVC架构,代码结构清晰,易于维护和扩展,在处理高并发和大数据量时表现出色
- CodeIgniter
- CodeIgniter是一个轻量级、易于学习和使用的PHP框架。它的核心文件较小,执行效率高,对服务器环境要求较低。CodeIgniter具有简洁的API和良好的文档
- CakePHP
- CakePHP是一个遵循MVC模式的PHP框架,注重约定优于配置的原则。它内置了许多实用的功能,如数据库抽象层、表单验证、视图模板等,能帮助开发者快速搭建Web应用。CakePHP有活跃的社区和丰富的插件资源
- Zend
- Zend Framework是一个功能强大、模块化的PHP框架,适用于构建企业级Web应用。它提供了丰富的组件和工具,如数据库访问、RESTful服务、安全认证等,具有高度的可扩展性和灵活性
JAVA
- Spring
- Spring是一个轻量级的Java开发框架,它提供了IoC(控制反转)和AOP(面向切面编程)等核心功能,帮助开发者更高效地构建企业级应用。Spring的IoC容器负责对象的创建和管理,降低了代码之间的耦合度;AOP则允许开发者在不修改原有代码的情况下,对程序进行增强,如日志记录、事务管理等
- MyBatis
- MyBatis是一个优秀的持久层框架,它将SQL语句从Java代码中分离出来,通过XML或注解的方式进行配置,使得SQL的维护更加方便。MyBatis支持自定义SQL、存储过程和高级映射,能够很好地与各种数据库进行交互
- Hibernate
- Hibernate是一个流行的ORM(对象关系映射)框架,它实现了Java对象与关系数据库记录的映射关系,开发者可以通过操作Java对象来实现对数据库的增删改查操作,而无需编写复杂的SQL语句。Hibernate提供了丰富的查询语言(HQL)和缓存机制,提高了开发效率和系统性能。
- Struts2
- Struts2是一个基于MVC(模型-视图-控制器)模式的Web应用框架,它通过拦截器机制实现了请求的处理和分发。Struts2的核心是Action类,负责处理用户请求并返回响应结果。Struts2提供了丰富的标签库,方便开发者在JSP页面中进行数据显示和表单处理
- Springboot
- Spring Boot是Spring框架的扩展,它简化了Spring应用的开发过程,提供了自动配置和嵌入式服务器等特性,使得开发者可以快速搭建独立的、生产级别的Spring应用。Spring Boot通过约定优于配置的原则,减少了开发者的配置工作量
Python
- Django
- Django是Python Web框架中最有代表性的重量级选手,采用MTV架构(M代表数据的模型,T代表网页模板,V代表视图函数),对常用设计和开发模式进行封装,减少Web开发不必要的开销,支持MVC架构思想,可帮助开发者快速开发可靠的Web应用程序。
- Flask
- Flask是一个轻量级的Web框架,从安装到使用较为简单,给予开发者很大的自由度,开发者可根据需求选择合适的扩展来添加功能
- Bottle
- Bottle是一个轻量级的Python Web框架,只有一个文件,没有外部依赖
- Turbobars
- Turbobars是一个基于MVC架构的网站开发框架。它基于一些WSGI组件(如炼金术、明术、休息等),模板引擎(genshi、Kajiki、cheetah、myghty)、大量库文件和中间件。同时,它还具有可以轻松生成某些特定函数的控件
- Tornado
- Tornado是一个高性能的Web框架,采用非阻塞式I/O和事件驱动的方式来处理请求,适合处理高并发的情
- Web2py
- Web2py是一个全栈式的Python Web框架,提供了很多内置的功能和工具
Javascript
- Vue.js
- Vue.js是用于单页应用程序(SPA)开发的JavaScript框架
- Node.js
- Node.js是一个基于Chrome V8引擎的JavaScript运行环境,使JavaScript可以在服务器端运行
- Bootstrap
- Bootstrap是一个流行的前端开源框架,用于快速开发响应式、移动优先的网站
- JQuery
- jQuery是一个快速、简洁的JavaScript库,简化了HTML文档遍历、事件处理、动画效果和AJAX交互
- Angular
- Angular是一个由Google维护的JavaScript框架,用于构建大型、复杂的单页应用程序
源码类型
开源
- 开源源码是指其源代码可以被公众获取、查看、修改和再分发的软件代码
- 例如:Zblog

闭源
- 闭源源码是指软件的源代码被软件所有者严格保密,不向公众公开
- 例如:淘宝(内部开发----》商业产品)
- 加密
- 加密源码是对源代码进行加密处理,以保护代码的知识产权和安全性
- 加密处理:如PHP加密⼯具将源码转码,不影响功能但改变源码形式
- 语⾔特性:Java语言⽬录下的class⽂件⽆法直接阅读
- 例如:通达OA

数据库差异
数据库类型
Access
- Access是一种桌面型数据库,它属于关系型数据库,适合小型应用和个人使用,提供了直观的界面和简单的操作方式,可用于创建和管理小型数据集合
MYSQL
- MySQL是开放源码的小型关联式数据库管理系统,属于关系型数据库。因其体积小、速度快、总体拥有成本低,且开放源码,被广泛应用于Internet上的中小型网站
SqlServer
- SqlServer是微软开发的关系型数据库管理系统,常用于企业级应用,提供了强大的数据管理和分析功能,支持大规模数据存储和处理
Oracle
- Oracle是一款大型的商业关系型数据库管理系统,以其高可靠性、高性能和强大的功能在企业级应用中广泛使用,尤其适用于对数据安全性和稳定性要求较高的大型企业
Redis
- Redis是一种非关系型数据库,属于键值对存储数据库。它将数据存储在内存中,具有极高的读写性能,常用于缓存、消息队列、实时统计等场景
DB2
- DB2是IBM公司开发的关系型数据库管理系统,具有强大的企业级功能和可靠性,广泛应用于大型企业和金融机构等对数据处理要求较高的领域
Postgresql
- Postgresql是一种开源的对象关系型数据库管理系统,支持丰富的数据类型和复杂的查询,具有良好的扩展性和稳定性,适用于各种规模的应用
MongoDB
- MongoDB是一个介于关系数据库和非关系数据库之间的产品,属于非关系数据库。它支持的数据结构松散,采用类似json的bson格式,能存储复杂的数据类型,且查询语言强大,还支持对数据建立索引
本地数据库
- 所有数据和程序源码都存储在本地计算机上
- 本地服务器搭建

分离数据库
-
数据库部署在另⼀台独⽴的服务器上 ⽹站源码和数据库不在同⼀服务器
-
另外的服务器搭建

云数据库
-
云数据库是托管在云平台上的数据库服务,用户可以通过网络访问和管理数据库
-
云数据库的优势
- 安全性提升:
- ⽀持IP⽩名单限制,仅允许指定IP访问
- 可采⽤密钥认证替代传统账号密码
- ⽀持安全组规则限制访问来源
- ⾼可⽤性:
- 多可⽤区部署模式保障业务连续性
- ⾃动备份和恢复功能
- 灵活性:
- 按量付费和包年包⽉多种计费⽅式
- ⽀持多种数据库引擎(MySQL/PostgreSQL/SQL Server等)
- 安全性提升:
-
云数据库的安全特性
- 访问控制:
- 即使获取账号密码,未在⽩名单内的IP仍⽆法连接
- 可绑定特定应⽤访问,限制其他客户端连接
- 数据加密:
- ⽀持透明数据加密(TDE)保护敏感数据
- 存储加密保障数据安全
- 审计监控:
- 提供操作审计⽇志
- 异常访问⾏为监控
- 访问控制:
-
云数据库RDS

-
云数据库配置---》白名单-ip地址

-

-

平台差异
系统类型
- Windows
- Linux
- MacOS
中间件类型
Apache
- Apache是一款开源的Web服务器软件,具有高度的灵活性和可扩展性。它支持多种操作系统,如Linux、Windows等,并且能够处理大量的并发请求。Apache拥有丰富的模块,可以通过加载不同的模块来扩展其功能,例如支持SSL/TLS加密、URL重写等。它广泛应用于各种规模的网站和Web应用程序
Nginx
- Nginx是一款轻量级的高性能Web服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。它以事件驱动的架构设计,在处理高并发连接时表现出色,占用资源少,响应速度快。Nginx常用于负载均衡、静态资源服务和反向代理等场景,许多大型网站和高流量应用都选择Nginx作为前端服务器
IIS
- IIS(Internet Information Services)是微软提供的Web服务器软件,与Windows操作系统紧密集成。它提供了图形化的管理界面,易于配置和管理,适合在Windows平台上部署Web应用。IIS支持ASP、ASP.NET等微软的技术栈,广泛应用于企业内部的Web应用和基于Windows的网站
Lighttpd
- Lighttpd是一款快速、安全且轻量级的Web服务器,具有低内存占用和高并发处理能力。它采用了事件驱动的架构,性能优越,同时提供了丰富的模块来扩展功能。Lighttpd适合资源有限的环境,如嵌入式系统或小型网站
Tomcat
- Tomcat是一个开源的Servlet容器,也是一个轻量级的应用服务器。它实现了Java Servlet和JavaServer Pages(JSP)规范,能够运行基于Java的Web应用程序。Tomcat通常与Apache或Nginx等Web服务器配合使用,用于处理动态请求。它广泛应用于Java Web开发领域,是开发和部署Java Web应用的常用选择
Jboos
- JBoss是一个开源的应用服务器,基于Java EE平台。它提供了完整的企业级应用开发和运行环境,支持分布式应用、事务处理、消息队列等功能。JBoss适用于构建大型、复杂的企业级应用系统
Weblogic
- Weblogic是Oracle公司的一款商业应用服务器,具有强大的功能和高可靠性。它支持Java EE标准,提供了丰富的开发工具和管理控制台,适用于企业级的关键业务应用。Weblogic在性能、安全性和可扩展性方面表现出色
Websphere
- Websphere是IBM公司的一款企业级应用服务器,提供了全面的Java EE支持和丰富的企业级服务。它具有高度的可扩展性和可靠性,广泛应用于金融、电信等行业的大型企业应用。Websphere提供了强大的管理工具和监控功能,能够满足复杂的企业级需求
Jetty
- Jetty是一个开源的Servlet容器和Web服务器,具有轻量级、快速启动和易于集成的特点。它可以作为嵌入式服务器使用,也可以独立运行。Jetty适用于开发和测试环境,以及一些对启动速度和资源占用有较高要求的应用场景
容器类型
Docker
- Docker是一个用于开发、部署和运行应用程序的开源平台,它使用容器化技术来打包应用及其依赖项
K8s(Kubernetes)
- Kubernetes,常缩写为K8s,是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序
Vmware
- VMware是一家提供虚拟化和云计算技术的公司,其产品可以创建和管理虚拟机。虚拟机是在物理计算机上模拟的计算机系统,每个虚拟机都有自己的操作系统和应用程序。VMware提供了强大的虚拟化功能,允许在同一台物理服务器上运行多个虚拟机,提高了硬件资源的利用率
VirtualBox
- VirtualBox是一款开源的虚拟机软件,它可以在一台计算机上同时运行多个不同的操作系统。VirtualBox功能丰富,支持多种操作系统作为客户机系统,并且提供了图形化的管理界面,易于使用
解析差异
访问
URL访问对应文件
- 在 Web 开发中,当客户端发起一个 URL 请求时,服务器需要根据这个 URL 找到对应的文件或资源进行响应。在不同的框架和环境下,URL 与文件的映射方式不同。
-
正常访问案例
-
-
常规访问模式
- 域名解析到根⽬录
- 通过路径直接访问⼦⽬录⽂件
- 如:网站/post/1.txt
- 域名解析到根⽬录
-
MVC模型
-
MVC(Model-View-Controller)是一种软件设计模式,不局限于特定语言,其他语言也都有相应的实现
-
主要部分
- 模型(Model):负责处理数据和业务逻辑,例如与数据库交互、进行数据计算等。
- 视图(View):负责呈现数据给用户,通常是 HTML 页面或其他可视化界面。
- 控制器(Controller):接收用户的请求,调用模型处理数据,并选择合适的视图来显示处理结果。
-
路由访问
-
路由配置差异
-
Java等框架采⽤路由映射,URL与物理路径不对应
-
需要特定规则触发访问
-
实际⽂件存在但⽆法直接访问
-
渗透测试影响
- 上传后⻔需按路由规则访问
- 漏洞触发需要构造特定URL
- 分析配置⽂件了解路由规则
-
-
MVC 模式的优点是提高了代码的可维护性、可扩展性和可测试性,使得不同的开发人员可以专注于不同的部分
路径
绝对路径
- 绝对路径是从文件系统的根目录开始定位文件或目录的完整路径,它描述了文件在整个文件系统中的精确位置,不依赖于当前工作目录,在不同的操作系统中有不同的表示方式。在 Windows 系统中,绝对路径通常以驱动器盘符开始,如 C:\Users\Documents\example.txt;在 Linux 和 macOS 系统中,绝对路径以根目录 / 开始,如 /home/user/documents/example.txt
- 如:/var/www/html
相对路径
- 相对路径是相对于当前工作目录来定位文件或目录的路径,它不包含完整的文件系统信息,而是根据当前所在的位置来描述目标文件或目录的位置。相对路径使用一些特殊符号来表示相对位置,如 ./ 表示当前目录,../ 表示上一级目录。例如,当前工作目录是 /home/user,要访问该目录下的 documents 文件夹中的 example.txt 文件,相对路径可以表示为 documents/example.txt
- 如:../static/
- 案例:

- 案例:

















