其实对于cookie,想必大家都不陌生,cookie目前主要用于客户端的识别技术。

说到客户端识别技术,就不得不说一个登录态的问题了。登录态顾名思义,用于验证用户的登录与否。

1.登录态

对于PC端网站,一般用户首次注册登录的时候,服务端都会返回一个服务端自定义的cookie(有的时候是

加密的,用于以后的用户识别,以前的一篇博客有提到:Token实现用户认证

并且,对于服务器的请求,会有一个过滤器,这个过滤器会提取客户端cookie(提取的cookie会有一个域的

限制问题),进而对发起请求的用户身份进行识别。

对于移动端,比如微信小程序,很多时候,小程序发起请求是通过封装request方法,首次授权登录后,服务

端会返回一个authcode(名字随你怎么叫),授权成功,会将这个authcode添加到request的header里面,

之后发起请求的话,服务端会去验证这个header里面的authcode对用户身份进行审核。

2.cookie属性

用于用户识别的cookie都是由服务端发送的,那么这里就有必要说一下,服务端set-cookie时的cookie属性设置

domain="ecojust.com"  该属性含义为以此值结尾的所有站点,都会收到该cookie;

path=/login/ 该属性含义为该路径下的文件的访问设定cookie,要和domain一起使用

Max-Age 设置以秒为单位的cookie生存期(同等于某些版本下的expires)

secure 该属性的作用是,石油网站启用SSL安全连接的时候才会发送cookie

3.基本认证

基本认证是最流行的HTTP认证协议,几乎每个主要客户端和服务器都实现了基本认证机制。

如果服务器配置了访问权限,那么用户访问特定资源的时候,服务器就会返回状态码:401 Authorization Required;

此时屏幕弹窗要求输入用户名密码。用户输入用户名密码之后,浏览器会将用户名和密码连接起来并且进行Base64

编码回送至服务器,这个过程称为质询/响应,涉及到的Http首部如下:

www-Authenticate: Basic realm = 请求的资源域   (质询,服务器发往客户端)

Authorization: Basic base64-username-and-password  (响应,客户端发往服务器)

username:password(冒号连接)=====>base-64()(base64编码处理)

4.基本认证的缺陷

说到底基本认证会通过网络发送用户名和密码,但是加密方式过于简单,所以实际上是以明文的方式进行传输的,恶意

的用户分分钟就能对其进行解码,所以在友好的环境下可以通过基本认证来提供便捷的文档访问控制。

5.摘要认证

虽然摘要认证不能满足安全Http事务的很多要求,但是要比基本认证强大很多。

摘要的原理就是客户端、服务端都知道密码,但是传输的时候,服务端验证的时候将传输进来的摘要和服务端生成的摘

要作对比,如果相同,则验证通过。这种单纯的隐藏密码对于别有用心的人来说,还是可以通过重放来进行攻击。

此时,可以通过增加随机数来防止重放攻击:

首先请求服务器资源,服务器401返回一个随机数给客户端;

客户端通过算法(随机数+输入密码+其他数据)生成摘要,并将随机数+其他数据+摘要回送服务端;

服务端拿到数据后,对比算法(随机数+其他数据+文档密码)与摘要是不是相等,相等则通过;

如此一来,每次生成的摘要因为有了随机数,使得每次产生的摘要都会不同,也就不能重放攻击了。

(这里的算法是预先定义好的算法,或者首次请求时服务器放回的算法列表中任选一个)

摘要是一种单向函数(不同于base64加密),它是不可解密的,常见的摘要函数有MD5(报文摘要的第五版)

Http权威指南(cookie以及web认证机制)的更多相关文章

  1. 【读书笔记】《HTTP权威指南》:Web Robots

    一.概述 Web机器人(Web Robots)是一种Web客户端的软件程序,它自动发起一系列的Web事务,从而在没有人工参与的状态下完成各种Web数据的搜集和处理. 典型的Web机器人有: 股票绘图机 ...

  2. 【读书笔记】《HTTP权威指南》:Web Hosting

    一.概述 从零开始构建一个真正意义的网站需要做很多事情,包括购买计算机硬件.建造机房.注册域名.购买网络带宽.开发Web服务器软件.管理网站内容等等.在互联网发展的早期,构建网站的这一系列动作通常都是 ...

  3. 经典的性能优化最佳实践 web性能权威指南 读书笔记

    web性能权威指南 page 203 经典的性能优化最佳实践 无论什么网络,也不管所用网络协议是什么版本,所有应用都应该致力于消除或减 少不必要的网络延迟,将需要传输的数据压缩至最少.这两条标准是经典 ...

  4. web性能权威指南(High Performance Browser Networking)

    web性能权威指南(High Performance Browser Networking) https://www.cnblogs.com/qcloud1001/p/9663524.html HTT ...

  5. HTTP 1.x 学习笔记 —— Web 性能权威指南

    HTTP 1.0的优化策略非常简单,就一句话:升级到HTTP 1.1.完了! 改进HTTP的性能是HTTP 1.1工作组的一个重要目标,后来这个版本也引入了大量增强性能的重要特性,其中一些大家比较熟知 ...

  6. 基于Token的WEB后台认证机制

    几种常用的认证机制 HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RES ...

  7. WEB后台认证机制

    mark to :http://www.cnblogs.com/xiekeli/p/5607107.html HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API ...

  8. 【转】基于Token的WEB后台认证机制

    原谅地址:http://www.cnblogs.com/xiekeli/p/5607107.html 几种常用的认证机制 HTTP Basic Auth HTTP Basic Auth简单点说明就是每 ...

  9. 《Web性能权威指南》

    <Web性能权威指南> 基本信息 原书名:High performance browser networking 原出版社: O'Reilly Media 作者: (加)Ilya Grig ...

随机推荐

  1. mysql备份脚本-mysqldump

    背景:全库备份 备份流程: 1.生成DB列表,将DB名字写入文件 2.定义备份函数,结果写入SQL文件 3.压缩文件,减少磁盘占用量 4.设置保留天数,定期删除n天之前的 5.通过for循环读取DB列 ...

  2. slf4j和log4j、logback

    现在主流java项目一般使用slf4j+log4j的日志方案,最近抽点时间扫了一下slf4j.log4j.logback的官方文档,做个笔记.这篇比较不打算描述具体的配置方法,因为官方文档已经讲得很清 ...

  3. Ubuntu16.04多个版本GCC编译器的安装和切换【转】

    本文转载自:https://www.cnblogs.com/uestc-mm/p/7511063.html 这几天在配置交叉编译ARM开发板的linux内核的过程中碰到了很多问题,其中包括了GCC版本 ...

  4. HTML中的figure和gigcaption标签

    参考自:anti-time的博客http://www.cnblogs.com/morning0529/p/4198494.html 在写xhtml.html中常常用到一种图片列表,图片+标题或者图片+ ...

  5. [ARC061E]すぬけ君の地下鉄旅行 / Snuke's Subway Trip

    题目大意:Snuke的城镇有地铁行驶,地铁线路图包括$N$个站点和$M$个地铁线.站点被从$1$到$N$的整数所标记,每条线路被一个公司所拥有,并且每个公司用彼此不同的整数来表示. 第$i$条线路($ ...

  6. mybatis中的懒加载

    知识点:mybatis中的懒加载的使用 参考:https://www.cnblogs.com/ysocean/p/7336945.html?utm_source=debugrun&utm_me ...

  7. Chrome好用的插件:WhatRuns 查看网站使用的技术

    Chrome好用的插件:WhatRuns 查看网站使用的技术 这是一款免费的Chrome扩展程序,使用很简单. chrome安装这个插件之后,打开要检测的网站,然后点击WhatRuns 的图标,就开始 ...

  8. hdu4310 - Hero - 简单的贪心

    2017-08-26  15:25:22 writer:pprp 题意描述: • 1 VS n对战,回合制(你打他们一下,需要受到他们所有存活人的攻击)• 你的血量无上限,攻击力为1• 对手血量及攻击 ...

  9. python之Memcached 安装及操作

    一.Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的 ...

  10. logback MDC 使用

    有时候想在logback日志中打印请求IP.流水号这些信息,可以通过MDC(Mapped Diagnostic Contexts)实现: MDC.put("requestNo", ...