HTTP—https、http缓存、get与post、web安全

HTTP诞生

1989年为知识共享而诞生的Web,提出了3项WWW构建技术:

  1. 标准通用标记语言设为HTML(HyperText Markup Language,超文本标记语言)
  2. 文档传输协议HTTP(HyperText Transfer Protocol,超文本传输协议)
  3. 文档定位URL(Uniform Resource Locator,统一资源定位符)

HTTP特点

  • 无状态协议(不对请求和响应之间的通信状态进行保存,无法实现状态管理),所以后面引入Cookie和LocalStorage等技术。
  • 请求方法有:GET(获取资源)、POST(传输实体主体)、PUT(传输文件)、HEAD(获得报文首部)、DELETE(删除文件)、OPTIONS(询问支持的方法)、TRACE(追踪路径)、CONNECT(要求用隧道协议连接代理)
  • HTTP/1.1中,所有连接默认都是持久连接(keep-alive),即建立一次TCP连接后可以进行多次HTTP请求和响应
  • 管线化,即可并行发送多个请求。


    浏览器并发数
  • Cookie
    1)客户端发送请求报文;
    2)服务器生成包含Cookie信息的响应报文(Set-Cookie字段包含sid);
    3)客户端发送带Cookie信息的请求报文(Cookie字段的sid);

HTTP报文

  • HTTP报文本身是由多行数据构成的字符串文本。
  • 请求报文与相应报文的结构


    请求报文与相应报文的结构

    报文实例

    请求行:请求的方法、请求URI、HTTP版本
    状态行:表明响应结果的状态码、原因短语、HTTP版本

通用首部字段

请求首部字段

响应首部字段

实体首部字段
  • 压缩传输的内容编码(gzip、compress、deflate、identity)、分割发送的分块传输编码
  • MIME(Multipurpose Internet Mail Extensions,多用途因特网邮件扩展)

HTTP状态码

HTTP状态码

1) 200 OK ;请求正常处理
2) 204 No Content ;请求处理成功,但没有资源可返回
3) 206 Partial Content ; 客户端进行了范围请求,服务器成功处理
4) 301 Moved Permanently ; 永久性重定向,即请求的资源已经被分配了新的URI
5) 302 Found ; 临时重定向,即请求的资源临时被分配了新的URI
6) 303 See Other ; 表示请求对应的资源存在着另一个URI,应使用GET方法定向获取
7) 304 Not Modified ; 服务器资源未改变,可直接使用客户端未过期的缓存(与重定向无关)
8) 307 Temporary Redirect ; 临时重定向(会强制浏览器不能将POST改为GET方法)
9) 400 Bad Request ; 表示请求报文中存在语法错误
10) 401 Unauthorized ; 表明请求需要通过HTTP认证,若之前已请求过一次,则表示用户认证失败
11) 403 Forbidden ; 服务器拒绝该资源的访问
12) 404 Not Found ; 服务器无法找到请求的资源
13) 500 Internal Server Error ; 服务器发生内部错误
14) 503 Service Unavailable ; 服务器超负荷,无法处理请求
有些时候,状态码和状况会不一致

说明:301和302状态码都是重定向,但区别是301是永久重定向,302为临时重定向。若客户端将URL保存为书签,那么301就会去更新书签,而302不会去更新书签。
重定向:服务器告诉客户端,需要重新发送请求到新的URL。服务器返回302状态码时,设置响应头的Location字段。

HTTPS(HTTP over SSL,包括加密、认证、完整性保护)

  • HTTP的缺点
    1)通信使用明文(不加密),内容可能会被窃听;—>加密
    2)不验证通信方的身份,可能遭遇伪装;—>验证身份
    例子:伪装的web服务器;伪装的客户端;无访问权限的通信方;无法判定无意义请求,可能遭受DoS攻击;
    3) 无法证明报文的完整性,内容可能遭遇篡改;
  • 加密
    • 通信的加密、内容的加密
    • 加密方式:对称密钥加密(共享密钥加密)、非对称密钥加密(公开密钥加密)
      对称加密:加密和解密使用相同的密钥;问题:密钥如何安全到达对方;
      非对称加密:一对密钥(公开密钥+私有密钥);
      方式:服务器拥有一对密钥,当需要加密传输时,服务器将公开密钥分发给客户端,客户端利用公开密钥加密发送密文给服务器,服务器利用私有密钥解密;
      报文+公开密钥=密文;密文+公开密钥!=报文(技术上异常困难,离散对数求值);
      非对称加密相比对称加密速度慢;
    • HTTPS采用混合加密机制(非对称加密+对称加密)
      利用非对称加密 传输 对称加密时所需的 密钥,然后采用对称加密 传输主体;
HTTPS通信
  • 如何判断服务器发来的公开密钥的真实性?
    借用第三方数字认证机构(CA,Certificate Authority)
    1)服务器将自己的公开密钥登录至CA,申请公钥证书
    2)CA颁发公钥证书(公开密钥+CA数字签名)
    3)服务器向客户端发送公钥证书
    4)客户端利用浏览器内置的CA公钥验证 该公钥证书的 有效性
    5)客户端使用公开密钥对报文加密后发送
  • MAC(Message Authentication Code)报文摘要检测报文的完整性
  • 用以确认客户端的客户端证书
    用户得自行安装客户端证书,一般用于网上银行
  • 补充:抓包工具:wireshark,tcpdump

HTTP缓存

  • HTTP缓存分为强制缓存和对比缓存,两类缓存规则可以同时存在,强制缓存优先级高于对比缓存。


    HTTP缓存
  • 强制缓存(Expires/Cache-Control)
    HTTP 1.0中Expires的值为服务端返回的资源到期时间,所以要求时钟同步
    HTTP1.1中使用Cache-Control
    Cache-Control
  • 对比缓存(Etag / If-None-Match 或者Last-Modified / If-Modified-Since )
    对比缓存生效时,状态码为304,只返回header
  1. Etag / If-None-Match(优先级高)
    第一次请求时,服务器通过Etag告诉客户端资源的唯一标识符
    再次请求时,客户端通过If-None-Match告诉服务器该资源缓存数据库中的资源标识符,服务器将其进行校验比对,若资源发生变化(资源标识符变化),则返回修改过的资源,200;若资源未被修改过,则返回304。
  2. Last-Modified / If-Modified-Since
    第一次请求时,服务器在响应请求时,通过Last-Modified告诉浏览器资源的最后修改时间。
    再次请求时,客户端通过If-Modified-Since发送资源的最后修改时间,服务器接收到后进行校验对比,若资源在该时间之后被修改过,则返回修改过的资源,200;若资源未被修改过,则返回304。
    cnblog讲解
    个人理解:客户端缓存数据库中的资源带有Expires的时间、Cache-Control的时间间隔、If-None-Match的资源标识符 或者 If-Modified-Since的标识时间。浏览器在请求相应资源时,分别判断资源的各个标识符,采用缓存资源或者发送相应的http头部信息给服务器端进行校验。

get与post区别

W3school

  1. get可被缓存
  2. get请求保留在浏览器历史纪录中
  3. get请求可被收藏为书签
  4. get请求不应在处理敏感数据时使用,get请求在url中发送,post请求在http消息主体中发送。
  5. get请求长度有限制(url的限制),post请求对数据长度没有要求
  6. get只能是url编码
  7. get参数会显示在url中
  8. 后退和刷新,post会被重新提交
  9. get是幂等的,意味着对同一URL的多个请求应该返回同样的结果。
  10. 对资源的增,删,改,查操作,其实都可以通过GET/POST完成,不需要用到PUT和DELETE
    get与post区别

web安全

  • 主动攻击:
    1) SQL注入攻击
    方式:把SQL命令插入到表单中提交或URL中的查询字符串中,以欺骗服务器执行恶意的SQL命令;
    解决方法:对用户的输入进行校验、不使用管理员权限的数据库连接、机密信息加密存放;
    2) OS命令注入攻击(利用web应用的漏洞);
  • 被动攻击:
    1)跨站脚本攻击XSS
    方式:在正规网站的URL查询字段中加入script标签,使客户端在浏览正规网站的同时,运行JS代码;
    解决办法:对用户的输入进行校验、写到页面的内容先进行编码、用适当的方法对 HTML,JS 进行转义、将Set-Cookie设置为HttpOnly,则通过JS脚本无法读取到cookie信息;
    2)跨站点请求伪造(CSRF)
    方式:用户点击了正规网站和黑客网站,黑客网站向往正规网站服务器发送了请求,这个请求会携带用户本地浏览器的cookie,所以得以成功跨站点请求伪造。
    解决办法:1)设置验证HTTP Referer字段,以确保请求的来源网站的合法性。2)设置token。
    CSDN博客
    3)HTTP首部注入(攻击者在响应首部字段内插入换行,添加任意响应首部或主体)、
    4)邮件首部注入攻击
    其他攻击:DoS攻击(拒绝服务攻击,向服务器发送大量请求,造成服务器资源过载)
    DDoS(分布式拒绝服务攻击,常利用感染病毒的计算机作为攻击者的攻击跳板)
    CSDN博客
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容