Web安全:HTTP

目录

HTTP协议

1、发起http请求

2、协议详解

请求

响应


HTTP协议

目前互联网结构为B/S结构(浏览器/服务器),当客户端与web服务器及逆行交互时,就存在web请求,这种请求都基于统一的应用层协议(HTTP)交互数据。

HTTP(超文本传输协议)是一种详细规定了浏览器和万维网服务器之间互相通信的规则,是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从web服务器传送到web浏览器。

1、发起http请求

URL(统一资源定位符,也就是网址):协议://服务器ip[:端口]/路径/[?查询]

http://www.xxser.com/post/httpxieyi.html

发起请求:

1、在浏览器中输入网址发起请求(获取并渲染HTML,让用户看到更直观的界面)

2、使用工具发起请求:linux系统中的curl命令,windows下载并使用curl.exe工具等(直接获取HTML)

因为Windows下的中文环境编码是GBK,如果网页是其他的编码,使用curl就会出现乱码

解决办法1:打开cmd,输入chcp 65001,指示当前的code页是65001,也就是uft-8的那个页。然后再curl.

解决办法2:下载ICONV,然后配置ICONV的环境变量,在使用CURL的时候用上iconv就可以解决乱码的问题

2、协议详解

HTTP遵循请求(request)/应答(response)模型。

请求

请求行(请求方法):方法+域名根目录下的访问文件+http版本

post /login.php HTTP/1.1

1、Get

如果请求资源为动态脚本(php/jsp)返还的文本时web容器解析后的html源代码,而不是这个源文件(php/jsp)

在服务器脚本语言中可以选择性接收来自客户端的参数,一般有开发者内定好的参数项目才会接收

2、post

与get方法类似,最大区别在于get方法没有请求内容,post方法有。用于向服务端发送大量数据,get会将发送数据显示在浏览器端,post不会,安全性会高一些。

传递参数在请求正文中。

请求头(消息报头),到空白行结束,由客户端设定:请求的主机地址+浏览器标识+内容

Host:www.xxser.com

User-Agent:Mozilla/5.0(windows NT 6.1;rv:15:0)......

host:主要用于指定被请求资源的internet主机和端口号

User-Agent:允许客户端将操作系统、浏览器和其他属性告诉服务器

referer:用户从什么地方来到本页。

cookie:表示请求者身份

range:多线程下载一定会用到此请求头

                bytes=0~499:500字节

x-forward-for:XXF头,代表请求端的ip,可以有多个,逗号隔开

accept:指定客户端接收哪些MIME类型的信息,如accept:text/html表明客户端希望接收HTML文本。

accept-charset:指定客户端接收的字符集,没有设置这个则默认是任何字符集都可以接收

last-modified:服务器通过这个头告诉浏览器,资源的最后修改时间

location:服务器通过这个头告诉浏览器去访问哪个页面,浏览器接收到这个请求后,通常会立刻访问location头只想的页面,通常配合302状态码使用。

refresh:服务器通过这里告诉浏览器定时刷新浏览器

普通头:在普通报头中,有少数报头阈用于所有的请求和响应消息,但并不用于被传输的实体明知用于传输的消息,例如Date(消息产生的日期和时间)

请求正文,可选,最常出现在post请求方法中:

Username=admin&password=admin

响应

响应行:HTTP版本+状态码+消息

HTTP/1.1 200 ok

状态码:

100-101:请求已收到,继续处理

200-206:成功处理了请求,200最常见

300-305:访问资源已被移动并告诉客户端新的资源地址。这时浏览器将重新对新资源发起请求。301重定向

400-415:客户端发送服务端无法处理的东西,比如格式错误的请求,如一个不存在的url,404请求资源不存在,400请求语法错误不能被服务器理解,401请求未授权(未登录,无权限等),403服务器收到请求但是拒绝提供服务

500-505:有效请求,但服务端内部出错。可能是运行出错,可能是网站挂了。500最常见,503服务器当前不能处理请求,可能一段时间过后会恢复

响应头(消息报头),到空白行结束:由服务器向客户端发送

Date:消息产生的日期和时间

Server:web服务器名称,攻击者会通过这里探测到服务器名称,建议在服务器端修改此头信息

Content-Length:实体报头用于向接收方指明实体正文的长度,以字节方式存储的十进制数字来表示

Content-Type:实体头用于向接收方指示实体的介质类型

Cache-Control:用于指定缓存指令,缓存指令时单向的,且是独立的。

Expires:web中的文件被用户访问(请求)后的存活时间

Content-Encoding:HTTP中用来对采用哪种编码格式传输正文进行协定的一对头部字段

Set-Cookie:服务端向客户端发送的cookie信息

Connection:允许发送指定连接的选项,如指定连接时连续的,或者指定“close”选项,通知服务器,在响应完成后,关闭连接

相应正文(消息主题):服务器向客户端发送的html数据

<html>...

</html>

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值