zoukankan      html  css  js  c++  java
  • Http权威指南(cookie以及web认证机制)

    其实对于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(报文摘要的第五版)

  • 相关阅读:
    根据百度API获得经纬度,然后根据经纬度在获得城市信息
    Map实现java缓存机制的简单实例
    JMS学习(七)-ActiveMQ消息的持久存储方式之KahaDB存储
    JMS学习(六)-ActiveMQ的高可用性实现
    排列与组合的一些定理
    带权图的最短路径算法(Dijkstra)实现
    JMS学习(六)--提高非持久订阅者的可靠性 以及 订阅恢复策略
    JMS学习(五)--ActiveMQ中的消息的持久化和非持久化 以及 持久订阅者 和 非持久订阅者之间的区别与联系
    分布式系统理论之两阶段提交协议
    自定义栈的实现及使用两个栈模拟队列
  • 原文地址:https://www.cnblogs.com/eco-just/p/9465935.html
Copyright © 2011-2022 走看看