web请求流程与http方法剖析
(因为之前的排版太差了,又用的富文本编辑器,整理效果不好,抽了时间重新整理一下,这信息头也太难记了哈哈,最近要减少新知识摄入量,把总结都整理复习一遍,还是要学扎实点,最近看了一些面试题挺多这种基础的,比如这篇里的状态码分别的含义)
目录
http请求与响应
HTTP超文本传输协议
是今天所有WEB应用程序使用的通信协议
使用一种用于消息的模型:客户端发出一条请求,服务端返回一条相应消息,该协议基本不需要连接,虽然HTTP使用有状态的TCP协议作为他的传输机制,但是每次请求与响应都会自动完成,并且有可能使用不同的TCP连接
请求消息头(header)
GET+页面 请求这个页面内容
或POST 表示提交
HTTP/1.1 协议的版本
1.1版本必须使用Host请求头
HOST+域名或者IP地址
Conection close或者keep close更好
获取到数据之后 服务器与客户断开为 close
keep用户量大会出现问题
Cache-control
用于向浏览器传送缓存指令
若没有则为no-cache
其他为有
Upgrade -Insecure-Requests:1
用于自动升级请求从HTTP升级到HTTPS,起到过渡作用,解决安全性问题
内容账户密码都是加密的,抓包都是加密数据包
Use-Agent
表示本机操作系统内核版本,浏览器等信息
可能有Mozilla,因为历史浏览器遗留问题
Accept
表示浏览器支持的MIME类型
若*/*则表示支持任何类型
优先顺序从左到右
如果服务端没有客户端需要的类型,406错误
0.8后面没有则可以任意类型
MIME类型分类
Text:用于标准化表示文本信息,文本消息可以是多重字符集或格式的
text/html:表示html文档
applicition:表示传输应用程序数据或者二进制数据
application/xhtml+xml
表示xhtml文档
application/xml
表示xml文档
Refer
到目标的页面之前一开始的起始页面
防下载,盗链
可以判断非法链接
ACCEPT-Encoding
压缩字段,代表请求的页面是压缩的
展示效果好
服务器压力大
ACCEPT-Language
优先语言
zh-cn简体中文
zh中文
从0到1优先级从小到大,0为不接受
Cookie
登录时用到,用户信息内容可能存在本地Cookie
x_FORWARDED_FOR
是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端的最原始的IP地址的一个请求头字段
突破阿里云云WARF
加127.0.0.1,假装是本地访问,不会被拦截
Authorization
为一种内置HTTP身份验证向服务器提交证书
Origin
指出请求的域
响应消息头
http/1.1 200 ok
可以访问
Server
对方服务器型号
Data
日期
与缓存有关,并不同步
Connect-type
请求和返回类型,还有编码格式
Expires
控制缓存失效时间,指出响应内容已经过期
Pragmar
用于向浏览器传送缓存指令,指示浏览器不要将响应保存在缓存中
例如no-cache
Cache-control
缓存控制
X—Powered By
使用的框架
Vary:Accept-Encoding
表示网站启用了GZip压缩
Content_Length
HTML大小
ETag
浏览器根据HTTP请求的ETag验证请求资源是否变化
未变化
返回304 Not Modified响应,并且紫圆葱浏览器缓存中读取,这样就不必再次下载请求
Location
说明重定向访问的目标
WWW-Authenticate
用在带401状态码响应中,提供与服务器所持的身份验证有关的信息
跟服务器的身份验证有关
X-Fram-Options
指示浏览器框架是否以及如何加载当前响应
http方法,URL,cookie,状态码
HTTP方法(可以用于安全测试)
get
请求获取某一资源
post
提交表单
opptions
返回服务器各种信息
put
生成上传文件数据包
move
改名数据包
copy
复制数据包
delete
删除数据
propfind
生成返回有浏览目录权限的内容目录的数据包,最后点提交数据包把生成的数据包提交到服务器
URL
web资源唯一标识符,可通过它获取其标识的资源
默认80端口,写在域名后
?id=1 取出数据库id为1的数据返回
在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位符),它是WWW的统一资源定位标志,就是指网络地址。
URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
也可认为由4部分组成:协议、主机、端口、路径
cookie
概念
HTTP是无状态协议,客户端和服务器交换数据完毕就会断开连接,再请求,再连接,这就造成服务器单从网络连接上无法知道用户身份
为了解决,每次有新用户来的时候,就给它发一个身份证,下次访问就知道如何处理了
本质是一个很小的文本文件,储存在用户机器上
会话cookie
临时
持久cookie
可以设置有效时间
属性
域domain
可以控制哪些站点可以使用
路径PATH
可以为服务器特定文档指定cookie
secure
只能在HTTPS协议加密情况下才会发送
第三方cookie
cookie的域域地址栏中的域不匹配
通常用在第三方广告网站,为了追踪记录收集浏览习惯
状态码
1XX
提供信息
2XX
请求被成功提交
3XX
客户端被重定到其他资源
4XX
请求包含某种错误
5XX
服务器执行请求遇到错误
特殊状态码
100Continue
表示已经收到请求消息头
200OK
成功提交请求
201Created
put请求已经成功提交
301Moved Permanently
将浏览器永久重定向另外一个在Location消息头中制定的URL ,之后的客户端使用新的URL替换原有的
302found
恢复原始URL
304NOT Modifide
使用缓存中保存的所请求的资源的副本
400 Bad Request
提交了一个无效的HTTP请求
401 Unauthorized
HTTP身份验证
403 Forbidden
不管是否通过身份验证,禁止任何人访问被请求资源,主页没有配置
404 Not Found
资源已经被删除
405 Method Not Allowed
指定URL不接受请求中使用的方法
413 Request Entity Too Large
请求主体过长
414 Request URI Too long
请求中URL过长
500 Internal Server Error
服务器执行请求时遇到错误
仔细检查响应内容
503Service Unavaiable
web服务器正常,应用程序无法响应
检查网关,服务器,中间件
HTTPS
使用普通非加密TCP作为传输机制,安全传输机制是安全套接层SSL
http身份验证
Basic
请求消息头中随每条信息以Base64编码字符串形式发送用户证书
NTLM
NTLMV2 与Kerberos验证体系
Digest
响应式机制
web应用程序编码
URL编码(许多工具都可以转换)
%3d
=
%25
%
%20和+
空格
%0a
换行
%00
空字节
Unicode编码
HTML编码
跨站脚本漏洞时发挥作用
Base64
十六进制编码
远程和序列化框架
知识点
静态 动态语言区别
动态语言:服务端和客户端代码不一致(如 html)
静态语言:服务端和客户端代码一致(如: asp,php,aspx,jsp)
3.3.1 常见的脚本语言有那些
asp 、php、 aspx、 jsp、 cgi、 war、 do、 py、 pl
3.3.1 常见的数据库有那些
access mysql mssql(sqlserver) oracle postsql db2
3.3.1 常见的数据库与脚本语言搭配
asp+access,asp+mssql,php+mysql,aspx+mssql aspx+oracle,jsp+oracle, jsp+mssql 等
3.3.1 系统、脚本语言、中间件如何组合
Windows2003/2008/2012+asp、aspx、php+iis6.0/7.0+7.5
Apache+Windows/Linux+PHP Windows/Linux+Tomcat+JSP
3.3.1 渗透测试过程中如何查看对方网站平台
1、工具(RASS、天镜、NMAP、X-SCAN) 2、第三方平台(seo.chinaz.com) 3、通过 ping 观看 TTL 值