web发展史
web简介
Web(WorldWideWeb)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
万维网常被当成因特网的同义词,但万维网与因特网有着本质的差别。因特网(Internet)指的是一个硬件的网络,全球的所有电脑通过网络连接后便形成了因特网。而万维网更倾向于一种浏览网页的功能
互联网包含因特网,因特网包含万维网,即互联网>因特网>万维网
发展历史
-
web1.0:个人网站、门户网络,大量使用静态的HTML网页发布信息
- web服务器:SQL注入、文件包含、命令执行、上传漏洞、webshell
-
web2.0:微博、blog等,为用户提供网络应用的服务平台,强调用户的参与、在线的网络协作
- web用户:钓鱼攻击、URL跳转、框架漏洞、逻辑漏洞、XSS(跨站脚本攻击)、CSRF客户端请求伪造
-
web3.0:Internet发展的必然趋势,是web2.0的进一步发展和延伸
web1.0和web2.0的本质区别:
两者的本质区别在于:Web1.0的主要是在于用户通过浏览器获取信息。Web2.0则更注重用户的交互作用。
静态页面和动态页面
静态页面
在静态html页面中,用户通过Web浏览器HTTP协议向web服务器发送一个响应请求,告诉web服务器要浏览这个网站的哪个页面,接着根据用户的响应请求返回一个html页面给用户,经过浏览器渲染解析呈现在用户眼前。
- 静态没有数据库文件,不能连接数据库
- 主要是通过HTML代码开发设计
- 部分静态web页面为了页面的好看,使用了大量的JS代码,导致静态web页面打开速度慢
动态页面
在动态web页面中,依然要通过web服务器的http协议或https协议响应才能返回结果给用户,用户所有请求都必须要通过web服务器处理才能实现。
用户的响应请求是一个静态的html页面,只需要响应请求web服务器从系统中调出用户响应的内容,将内容返回给客户端浏览器进行处理,再返回给用户。
如果用户响应请求的是动态页面资源,例如.jsp/.asp/.aspx、/.php等,响应步骤是先将用户请求发送给web服务器,web服务器再从数据库调出有户请求的数据,调出数据后将所需要展示给用户的内容发送给服务器,最后通过web服务器将需要展示给用户的内容返回给用户浏览器解析执行,展示给用户。
URL统一资源定位符(俗称网页地址或简称网址)
- URL格式
protocol://hostname[:port]/path/[;parameters][?query]
-
protocol协议,常用的协议有http、https、ftp
-
hostname主机地址,可以是域名,也可以是IP地址
-
port端口,不是必须的部分,注意常见端口,http默认80端口
-
path路径,网络资源在服务器中的指定路径
-
parameter参数,向服务器传入参数
-
query查询字符串,用&可隔多个参数,每个参数的名和值用“=”符号隔开
HTML基础
HTML是用来描述网页的一种语言
HTML指的是超文本标记语言,不是一种编程语言,而是一种标记语言
标记语言是一套标记标签
HTML使用标记标签来描述网页
HTML文档包含了HTML标签及文本内容
HTML文档也叫做web页面
HTML标签
HTML标签是由尖括号包围的关键词
HTML标签通常是成对出现
标签对中的第一个标签是开始标签(开放标签),第二个是结束标签(闭合标签)
-
标题大小通过标题标签h1-6区别
-
段落标签p
-
超链接标签a,其中标签中的href属性用于指定超链接目标的url
-
图像通过标签img定义
-
HTML注释代码为!--...--
HTML元素
严格来讲,一个HTML元素包含了开始标签与结束标签。
基本结构
HTML代码可能存在以下漏洞:
-
跨站脚本攻击(XSS):攻击者通过注入恶意脚本代码,使用户在浏览器中执行该代码,从而窃取用户的敏感信息或者控制用户的浏览器
-
跨站请求伪造(XSRF):攻击者通过伪造用户的请求,使用户在不知情的情况下执行恶意操作,例如修改密码、转账等
-
SQL注入攻击:攻击者通过在输入框中注入恶意SQL语句,从而获取或者修改数据库中的数据
-
文件上传漏洞:攻击者通过上传恶意文件,例如木马程序,从而控制服务器或者窃取服务器上的数据
-
点击劫持攻击:攻击者通过在网页上覆盖一个透明的层,使用户在不知情的情况下点击了隐藏的按钮或者链接,从而执行恶意操作
-
HTTP头注入攻击:攻击者通过在HTTP头中注入恶意代码,从而控制用户的浏览器或者窃取用户的敏感信息
-
URL跳转漏洞:攻击者通过构造恶意URL,使用户在不知情的情况下跳转到恶意网站,从而窃取用户的敏感信息
web访问流程
什么是HTTP?
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应
如何访问web应用?
-
在浏览器地址栏键入URL访问
-
解析IP地址,根据IP地址和默认端口80,和服务器建立TCP连接
HTTP协议默认端口80
-
浏览器发布读取文件(URL中域名后面部分对应文件)的HTTP请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器
-
服务器对浏览器请求做出响应,并把对应的HTML文本发送给浏览器
-
浏览器将该HTML文本解析并进行内容显示
HTTP协议的内部操作过程
- HTTP定义的事务处理由以下四步组成:
客户端与服务器端建立连接
客户端向服务器端发送请求
服务器端向客户端回复响应
断开连接
HTTP协议
HTTP请求方法
- GET和POST的区别:
- get一般用于获取/查询 资源信息;post一般用于更新 资源信息
- post比get请求更加安全
- post请求发送的数据更大,get请求有url长度限制
HTTP协议的主要特点
- 支持客户/服务器模式:一个服务器可以为分布在世界各地的许多客户服务
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有get和post。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由content-type加以标记。
HTTP请求报文组成
HTTP请求由四部分组成:请求行、请求头部、空行和请求数据。
HTTP报文格式
cookie和session的区别:
cookie保存在客户端,session保存在服务器
HTTP状态信息
HTTP的缺陷
-
HTTP协议的简单特性,不保存客户端的状态,不进行验证客户端是否是真实存在,传输使用的是明文传输
-
通信双方使用明文传输(不加密),内容可能会被窃听
-
不验证通信方的身份,可能遭遇伪装
-
无法证明报文的完整性,可能已遭篡改
HTTPS协议
在HTTP上建立SSL加密层,并对传输数据进行加密,HTTP协议的安全版
主要作用:
-
对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全
-
对网站服务器进行真实身份认证
-
默认HTTP端口号为80,HTTPS端口号为443
为什么要进行加密?
防止中间人攻击、防钓鱼
客户端/web应用安全
web访问流程
cookie/session
用户登录一个网站时常常会涉及到用户登录的状态保持,来使得用户获得更好的体验。那么cookie和session就是为了实现状态保持的。
web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议,一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。跟踪会话,就必须要引入一种机制
cookie
- cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
- cookie的产生以及传输验证
-
- 用户在登录时向后端服务器发送post请求,服务器接受请求,检验请求参数无误后,处理登录业务逻辑,返回响应。此时服务器端生成对应的cookie字符串,响应到前端浏览器
-
- 浏览器本地保存cookie值
-
- 在登录后用户再向服务器发送请求,则带着浏览器本地保存的cookie值,发送给服务器
-
- 服务器在接受到请求后,获取到请求参数(里面带有cookie),服务器把获取的cookie值跟之前服务器生成的cookie比较,发现cookie值相同,则默认时同一个用户再访问服务器,从而实现用户登录状态保持
-
session
- 除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态。Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存储压力。Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
- session的产生以及传输验证
-
- 每个用户访问服务器都会建立一个session,那服务器是怎么标识用户的唯一身份呢?用户与服务器建立连接的同时,服务器会自动为其分配一个SessionId
-
- session创建于服务器端,保存于服务器,每创建一个新的Session,服务器端都会分配一个唯一的ID,并且把这个ID保存到客户端的Cookie中,保存形式是以sessionID来保存的
-
- session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了
-
两者区别:
- 不同之处在于:
-
session在服务器端,cookie在客户端(浏览器)
-
session默认被存在在服务器的一个文件里(不是内存)
-
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
-
一般情况,登录信息等重要信息存储在session中,其他信息存储在cookie中
-
同源策略(Sameoriginpolicy)
是由NetScape提出的一个著名的安全策略。所谓的同源,指的是协议,域名,端口相同。浏览器处于安全方面的考虑,只允许本域名下的接口交互,不同源的客户端脚本,在没有明确授权的情况下,不能读写对方的资源。
它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现
一个域名地址的组成
服务器中间件(了解)
是一种软件,它位于操作系统和应用程序之间,用于管理和协调应用程序和系统资源之间的交互。服务器中间件通常包括Web服务器、应用服务器、消息队列、缓存服务器等
-
Web服务器是最常见的服务器中间件之一,它用于处理HTTP请求和响应,将Web页面和其他Web内容提供给客户端浏览器。Web服务器通常包括Apache、Nginx、IIS等。
-
应用服务器是另一种常见的服务器中间件,它用于管理和协调应用程序和系统资源之间的交互。应用服务器通常包括Tomcat、WebLogic、JBoss等。
-
消息队列是一种用于异步通信的服务器中间件,它用于在分布式系统中传递消息。消息队列通常包括ActiveMQ、RabbitMQ等
-
缓存服务器是一种用于缓存数据的服务器中间件,它可以提高应用程序的性能和响应速度。缓存服务器通常包括Redis、Memcached等。
服务器中间件的主要作用是提供一个可靠的、高性能的、可扩展的平台,使应用程序能够在分布式环境中高效地运行。它们还可以提供安全性、可管理性、可监控性等功能,帮助管理员更好地管理和维护应用程序和系统。