第一节 Web介绍
第一节 Web介绍
课程回顾:
- Web是什么?
- Web发展分为哪几个阶段?
- Web安全问题发展形势?
- Web的工作流程?
- 浏览器是如何工作的?
总结回答:
- Web指的是World Wide Web,平时通过浏览器上网都属于Web。
发展阶段 | 安全问题 | 对象 |
---|---|---|
Web 1.0 | SQL注入,上传漏洞,文件包含,挂马暗链,命令执行 | 针对Web服务器 |
Web 2.0 | XSS,CSRF,URL跳转,数据劫持,框架漏洞,逻辑漏洞,钓鱼 | Web用户 |
- Web安全形势不容乐观:
- 数量迅速增长
- 种类迅速增多
- 开始针对Web用户
参考资料
初级
- 浏览器熟悉
下载安装Chrome/Firefox浏览器,使用这两个浏览器访问《Web安全工程师》微专业站点 - Web架构熟悉
1)列出Web前端相关的开发语言并了解;
2)列出常见的Web后端相关的开发语言并了解;
3)了解数据库服务器、Web服务器和DNS服务器。
高级
流程描述
详细的描述当我们在浏览器输入URL后的Web流程(可以网络搜索资料,自行整理描述)。
回答
初级
- Web前端相关的开发语言:
Javascript,Html,CSS等 - Web后端相关的开发语言:
PHP,Java,Javascript等 - 数据库服务器:
SQL服务器等[存储数据的服务器]。(https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%9C%8D%E5%8A%A1%E5%99%A8/613818?fr=aladdin)
Web服务器:网页服务器,负责解析HTTP协议,让我们的浏览器可用。只有存在Web服务器的时候网页才能够被访问,一个网站实际上就是一台Web服务器,每当收到请求时便返回相应的响应。
DNS服务器:进行域名和IP地址转换的服务器。实际浏览器访问网站时大多使用的是URL地址,DNS服务器的作用便是将URL地址转换为相应的IP地址从而使浏览器能跳转到Web服务器上去。 - Web流程:
浏览器输入URL后发送到DNS服务器上,DNS服务器返回相应的IP地址,浏览器再通过IP地址访问相应的Web服务器,发送请求并获得响应页面。
课程作业
1 简单描述一下Web工作流程?(提示:分步骤)。
回答如课程回顾4。
2 使用chrome浏览器打开www.163.com,查看加载的资源。截图展示首页资源,并分别列出网页中的一个js、img资源链接。
回答:
首页资源:
js资源链接:https://urswebzj.nosdn.127.net/webzj_cdn101/message.js
img资源链接:http://cms-bucket.ws.126.net/2019/11/02/59641c8d47f8404fa9509ffc72d48be2.jpeg?imageView&thumbnail=453y225&quality=85
第二节 Web通信
第二节 Web通信
课程回顾:
- URL是什么,有什么作用?
- 描述一下URL的格式?
- HTTP的报文结构是什么样子?
- Cookie和Set-Cookie代表什么意思?
- Referer有什么作用?
- 状态码301/302和Location分别代表什么意思?
总结回答:
- URL:Uniform Resource Locator,统一资源定位符,支持多种协议如HTTP,FTP等。指我们平时的站点链接,比如www.baidu.com。用作定位到网站资源,如同快递中的收货地址。
- URL的格式:
schema: //host[:port#]/path/…/?[query-string]#[anchor]
- HTTP(超文本传输协议)的报文结构:
- 起始行(Request Line)
- 头(Head)
- 身体(Body)
拿百度主页的访问为例:
GET / HTTP/1.1 ##Request Line
'''
Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: BIDUPSID=3F90D00F418914753; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=1452_21079_18560_29568_29221; delPer=0; BD_CK_SAM=1; PSINO=2; H_PS_645EC=85a76KN%2FNmFEdt6mXHFXchn5pcvoZBxwINrtBBoK%2Fqtp9Yqamvk2ySwWxDk; BD_HOME=0
''' ##Head
由于请求为get 所有body内容为空。
-
Cookie:
指用户的凭证,包含用户的登录验证信息。
Set-Cookie:
指服务器端返回给用户的Cookie凭证。 -
HTTP请求——Referer:
可以告诉告知服务器该请求的来源。
比如我们访问csdn,当我们直接访问csdn时返回的Head里没有Referer信息,而当我们从百度搜索页面跳转时,HTTPHead中会多出如下所示信息:
Referer: https://www.baidu.com/link?url=06sdguv5K3EpSVCAlYwPqkSt6nuWKdz7osF6O_Xg613&wd=&eqid=dd1f24b20007bfe2000000025dbd0fbf
通过Referer我们可以进行流量统计,判断来源的合法性(防盗链,防CSRF漏洞)。
- 301/302表示跳转状态码。当我们HTTP报文返回跳转码时,往往会附带一个Location字段,表示为当我们访问该网站时自动跳转到Location字段对应的网站。
参考资料
初级
1. 熟悉常见浏览器协议
1)学习ftp、https、file三种协议:列出每一种协议的具体说明;
2)在浏览器中使用这3种类协议访问资源:了解访问结果(包括协议类型和资源),自行整理成笔记。
2. 熟悉HTTP
1) 熟悉HTTP报文;
A、学习HTTP请求报文中的请求方式:GET、POST、HEAD、PUT、DELETE、MOVE、OPTIONS、TRACE的意义,给出总结列表及用法;
B、了解返回报文中常见状态码1XX–5XX的大致含义;
C、了解请求报文中User-Agent、Host、Cookie、X-Forwarded-For和返回包中server、Set-Cookie、 Content-Type、httponly、X-Frame-Options属性的含义;
2)了解Base64编码;
3)熟悉HTTP基本认证。
高级
简述HTTPS和HTTP的区别和联系
学习内容
了解跟HTTPS相关的CA证书、SSL的概念
回答:
- 浏览器协议
ftp协议:
File Transfer Protocol,文件传输协议,是TCP/IP协议组中的协议之一,用于客户端和文件服务器之间的文件传输。默认端口为20与21,其中20端口用于数据传输,21端口用于控制信息传输。
https协议:
由于http协议在安全方面存在的缺陷,出现了以安全为目标的http通道协议即https协议,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。
file协议:
本地协议。访问本地文件用的。 - HTTP请求报文中的请求方式
请求方式 | 意义 | 用法 |
---|---|---|
GET | 请求服务器发送资源 | 只请求不修改 |
POST | 向服务器提交数据 | 提交数据给服务器 |
HEAD | 了解资源一些信息和响应信息 | 返回实体的主体部分 |
PUT | 在服务器上创建文档 | 向服务器提交一个文档,若存在就覆盖 |
DELETE | 删除服务器资源 | 删除指定资源,不保证一定被删除 |
MOVE | 转移服务器地址 | 将服务器页面转移到另一服务器地址 |
OPTIONS | 查看当前URL支持的方法 | 请求成功会返回名为“Allow”的头,包含支持的方法 |
TRACE | 查看在途中是否被修改 | Trace在服务器端发起回环并返回经过途中后的请求 |
状态码1XX–5XX的大致含义
状态码 | 含义 |
---|---|
1xx | 临时响应 |
2xx | 成功接收 |
3xx | 客户端必须采取额外操作 |
4xx | 发生错误,客户端似乎有问题 |
5xx | 服务器错误 |
报文中属性的含义:
属性 | 含义 |
---|---|
User-Agent | 告诉服务器客户端的操作系统及浏览器信息 |
Host | 指定要请求的资源所在主机和端口,从url获取 |
Cookie | 客户端储存的用于服务器辨别用户身份 |
X-Forwarded-For | 提供原始客户端及通过的代理服务器ip |
server | 服务器所使用的web平台名称 |
Set-Cookie | 给客户端分配Cookie |
Content-Type | 返回内容的 MIME类型 |
httponly | 只要浏览器支持HttpOnly标志,客户端脚本就无法访问cookie |
X-Frame-Options | 指示浏览器是否允许一个页面可在、 |
- Base64编码:
Base64编码是一种传输8bit字节码的编码方式,其采用了64个可打印字符来表示二进制数据,起初目的是解决8bit编码超出ASCII码无法传输的问题(8bit范围为0-255,而ASCII码为0-127),因此将每24bit作为四个6bit字符补零成8bit字符后再传输这样就不会超过ASCII码范围。 - HTTP基本认证:
- HTTP与HTTPS比较:
方面 | HTTP | HTTPS |
---|---|---|
协议 | HTTP | HTTP |
URL | http:// | https:// |
安全性 | 不安全 | 安全 |
端口 | 80 | 443 |
网络模型 | 应用层 | 传输层 |
保密性 | 无需加密 | 数据加密 |
认证证书 | 无需证书 | 需要认证证书 |
课程作业
1. 请指出url “http://vip.163.com:8080/users/getid?id=123&return= http%3A%2f%2fwww.163.com #23”
中 schema、host、path、port、query-string、anchor 分别是什么?
回答:
- schema:http
- host: vip.163.com
- port: 8080
- path:users/getid
- query-string:id=123&return= http%3A%2f%2fwww.163.com
- anchor:23
2. 下图为HTTP响应报文,请指出状态行、消息报头、响应正文的位置。(以行数表示)。
回答:
1行为状态行
2-12行为消息报头
14行之后为响应正文