HTTP协议

一、什么是HTTP协议?

是什么?

HTTP协议:即超文本传输协议。

做什么?

主要用于:用于服务器跟客户端进行一个通讯的协议。

怎么做?

工作机制:在客户端跟服务器之间以request-response Protocol(请求-回复协议)工作。

二、HTTP协议传输请求方法:

标准Http协议支持八种请求方法,即:

1.get

是什么?

GET是HTTP传输的常用方法

做什么?

从指定服务器中获取数据。

怎么做?

使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送到服务器

DEMO:/test/demo_form.jsp?name1=value1&name2=value2

其中name1对应的值就是value1,name2对应的值就是value2,中间用&分割

特点:

~GET请求能够被缓存

~GET请求会保存在浏览器的浏览记录中

~以GET请求的URL可以保存为浏览器书签

~GET请求有长度限制,大小为2K。其实此长度限制,是由于浏览器对URL有一个长度限制。此文有讲述。

~GET请求主要用于获取数据

2.post

是什么?

HTTP常用的方法。

做什么?

提交数据给指定服务器处理。

怎么做?

使用POST请求,查询字符串在POST中单独存在,和HTTP请求一起发送到服务器。

DEMO:

POST /test/demo_form.jsp HTTP/1.1

Host: w3schools.com

name1:value1

name2:value2

特点:

~POST请求不能被缓存下来

~POST请求不会保存在浏览器浏览记录中

~以POST请求的URL无法保存为浏览器书签

~POST请求没有长度限制


3.head

与GET请求类似,不同在与服务器只返回HTTP头部信息,没有页面内容

4.delete

顾名思义,Delete方法就是通过http请求删除指定的URL上的资源啦

HTTP提供了一个与PUT方法对应的DELETE方法。一个DELETE请求将需要从Web服务器删除的内容指定为请求行中的资源部分。

DELETE方法唯一有趣的地方在于当你接收了一个标识为200 OK的响应的时候,那并不意味着指定的资源已经被删除了。那仅仅说明服务器接收到了删除资源的命令。这一例外允许了出于安全考虑的人为的干预,Delete请求一般会返回3种状态码:

200 (OK) - 删除成功,同时返回已经删除的资源

202 (Accepted) - 删除请求已经接受,但没有被立即执行(资源也许已经被转移到了待删除区域)

204 (No Content) - 删除请求已经被执行,但是没有返回资源(也许是请求删除不存在的资源造成的)

5.put

上传指定URL的描述

put方法跟Post相似,但不常用。

根本区别:

POST请求后,URL后续处理与请求前再无联系,可以重定向指定资源。

PUT请求后,会反馈状态码,且不会重定向指定资源。

6.options

返回服务器支持的HTTP方法。

OPTIONS请求方法的主要用途有两个:

1、获取服务器支持的HTTP请求方法;也是黑客经常使用的方法。

2、用来检查服务器的性能。例如:AJAX进行跨域请求时的预检,需要向另外一个域名的资源发送一个HTTP OPTIONS请求头,用以判断实际发送的请求是否安全。

7.trace

支持该方式的服务器存在跨站脚本漏洞,通常在描述各种浏览器缺陷的时候,把"Cross-Site-Tracing"简称为XST。

攻击者可以利用此漏洞欺骗合法用户并得到他们的私人信息。

URL: XXX

漏洞等级: 提示

威胁类型: TRACE Method Enabled

可能导致: 启用TRACE方法存在如下风险:

1、恶意攻击者可以通过TRACE方法返回的信息了解到网站前端的某些信息,如果缓存服务器等,从而为进一步的攻击提供便利;

2、恶意攻击者可以通过TRACE方法进行XSS攻击,盗取会话cookie、获取账户、模拟其他用户身份,甚至可以修改网页呈现给其他用户的内容,从而给用户带来损失;

3、即使网站对关键页面启用了HttpOnly头标记,禁止脚本读取cookie信息时,通过使用Trace方法,恶意攻击者可以绕过这个限制,读取cookie信息。

描述: 目标WEB服务器启用了TRACE方法。

TRACE方法是HTTP(超文本传输)协议定义的一种协议调试方法,该方法使得服务器原样返回任何客户端请求的内容(可能会附加路由中间的代理服务器的信息),由于该方法原样返回客户端提交的任意数据,因此,可用来进行跨站脚本(XSS)攻击,这种攻击方式又称为跨站跟踪攻击(XST)。

建议: 如非必要,请禁用TRACE方法。

解决方案:

1)2.0.55以上版本的Apache服务器,可以在httpd.conf的尾部添加:

TraceEnable off

2)如果你使用的是Apache

-  确认rewrite模块激活(httpd.conf,下面一行前面没有#):

LoadModule rewrite_module modules/mod_rewrite.so

- 在各虚拟主机的配置文件里添加如下语句:

RewriteEngine On

RewriteCond %{REQUEST_METHOD} ^TRACE

RewriteRule .* – [F]

注:可以在httpd.conf里搜索VirtualHost确定虚拟主机的配置文件。

trace的攻击方法,在网上没有找到多少。找到了trace 方法

traceroute

Version 1.4a12+Darwin

Usage: traceroute [-adDeFInrSvx] [-A as_server] [-f first_ttl] [-g gateway] [-i iface]

[-M first_ttl] [-m max_ttl] [-p port] [-P proto] [-q nqueries] [-s src_addr]

[-t tos] [-w waittime] [-z pausemsecs] host [packetlen]

详情请看traceroute使用

8.connect

转换为透明TCP/IP隧道的连接请求。

CONNECT与GET等的不同之处就在于代理服务器对CONNECT连接处理为建立一个到目标服务器的连接而不把CONNECT请求发送出去,建立连接以后代理服务器不会对连接数据作任何修改,只是转发

三、COOKIE和SESSION

作者:知乎用户

链接:https://www.zhihu.com/question/19786827/answer/28752144

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1. 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务端保存Session的方法很多,内存、数据库、文件都有。集群的时候也要考虑Session的转移,在大型的网站,一般会有专门的Session服务器集群,用来保存用户会话,这个时候 Session 信息都是放在内存的,使用一些缓存服务比如Memcached之类的来放 Session。

2. 思考一下服务端如何识别特定的客户?这个时候Cookie就登场了。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。有人问,如果客户端的浏览器禁用了 Cookie 怎么办?一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户。

3. Cookie其实还可以用在一些方便用户的场景下,设想你某次登陆过一个网站,下次登录的时候不想再次输入账号了,怎么办?这个信息可以写到Cookie里面,访问网站的时候,网站页面的脚本可以读取这个信息,就自动帮你把用户名给填了,能够方便一下用户。这也是Cookie名称的由来,给用户的一点甜头。

所以,总结一下:

Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;

Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

具体分析,请看知乎的一些观点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容

  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 8,353评论 6 152
  • Http协议详解 标签(空格分隔): Linux 声明:本片文章非原创,内容来源于博客园作者MIN飞翔的HTTP协...
    Sivin阅读 5,223评论 3 82
  • http协议有http0.9,http1.0,http1.1和http2三个版本,但是现在浏览器使用的是htt...
    一现_阅读 1,863评论 0 3
  • PS:简书的网址真不是给人看的。。。我单独开了一个网址可以重定向到我的简书主页。博客地址:flutterall.c...
    徐爱卿阅读 6,914评论 21 97
  • HTTP概述 超文本传输协议(HTTP,HyperText Transfer Protocol) 是互联网上应用最...
    曹渊说创业阅读 3,851评论 2 61