zoukankan      html  css  js  c++  java
  • 接口测试(六)--基本认证

    【转载】

    基本认证

    有对盲人夫妇约定啪啪暗号,男人说:“打牌。”女人说:“开始。”隔壁小青年经常听到打牌,心想盲人怎么打牌呢?于是偷窥,一看原来如此。某日,小青年趁男盲人外出,溜进其家,对女盲人说:“打牌。”女盲人说:“开始。”于是两人啪啪了。小青年本领大,至hight处,女盲人连夸:“好牌。”到了晚上,男盲人又想与妻打牌,女盲人说:“你不是白天打了一次了吗?”男盲人一听,又急又气,惊呼:“不好,有人偷牌!”

    ----------------------------------进入正题--------------------------

    HTTP协议是无状态的,就像两个盲人一样,彼此不能识别对方。

    同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端

    服务器需要通过某种方式了解访问用户的身份。一旦服务器知道了用户身份,就可以判断用户可以访问的事务和资源了。认证意味着要证明客户端访问用户是谁。通常情况是通过提供用户名和密码来认证的

    一、什么是HTTP基本认证?

    客户端通过HTTP协议跟Web服务器交互, 客户端一般不会使用cookie, 而是把 '用户名+冒号+密码'用BASE64编码的字符串放在http request 中的header Authorization中发送给服务端, 这种方式叫HTTP基本认证(Basic Authentication)

    当浏览器访问使用基本认证的网站(如我们要下载论坛里面的某个附件http://120.25.145.237/upload/forum.php?mod=viewthread&tid=15)的时候, 浏览器会提示你登陆(输入用户名和密码),如下图

    当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码,如下图

     

    假如用户名密码错误的话, 服务器会返回401 如下图

     

    二,认证原理

     

    三、HTTP基本认证的过程

    第一步: 客户端发送http request 给服务器,

    第二步: 因为request中没有包含Authorization header, 服务器会返回一个401 Unauthozied 给客户端,并且在Response 的 header 'WWW-Authenticate' 中添加信息。

     

    第三步:客户端把用户名和密码用BASE64编码后,放在Authorization header中发送给服务器, 认证成功。

    第四步:服务器将Authorization header中的用户名密码取出,进行验证, 如果验证通过,将根据请求,发送资源给客户端

     

    使用Fiddler Inspectors 下的Auth 选项卡,可以很方便的看到用户名和密码:

     

    四、HTTP基本认证和HTTPS

    把 '用户名+冒号+密码' 用BASE64编码后的string虽然用肉眼看不出来, 但用程序很容易解密,上图可以看到Fiddler就直接给解密了。 所以这样的http request 在网络上,如果用HTTP传输是很不安全的。 一般都是会用HTTPS传输, HTTPS是加密的, 所以比较安全.

    五、HTTP OAuth认证

    OAuth 对于Http来说,就是放在Authorization header中的不是用户名密码, 而是一个token.

    微软的Skydrive 就是使用这样的方式, 如下图

     

    六、其他认证

    除了基本认证(Basic Authentication), 还有摘要认证 digest authentication, WSSE(WS-Security)认证

    七、基本认证的安全缺陷

    1. 基本认证通过网络发送用户名和密码,虽然进行base-64编码可以隐藏用户名和密码,但是很容易通过反向编码过程进行解码。

    2. 即使密码以更加难以解码的方式加密,第三方用户仍然可以捕获被修改过的用户名和密码,并通过重放攻击获取服务器的访问权限。

    3. 很多用户会将不同的服务使用相同的用户名和密码,基本认证直接发送用户名和密码,会对一些重要的服务(比如在线银行网站)造成威胁。

    4. 基本认证没有提供任何针对代理和中间人节点的防护措施,他们没有修改认证首部,但却修改了报文的其余部分,这样就严重的改变了事务的本质。

    5. 假冒服务器很容易骗过基本认证。如果在用户实际链接到一台恶意服务器或者网关的时候,能够让用户相信他链接的是一个受基本认证保护的合法主机,攻击者就可以请求用户输入密码。

    6. IIS中站点默认开启匿名身份验证,并可以直接访问

  • 相关阅读:
    leetcode108 Convert Sorted Array to Binary Search Tree
    leetcode98 Validate Binary Search Tree
    leetcode103 Binary Tree Zigzag Level Order Traversal
    leetcode116 Populating Next Right Pointers in Each Node
    Python全栈之路Day15
    Python全栈之路Day11
    集群监控
    Python全栈之路Day10
    自动部署反向代理、web、nfs
    5.Scss的插值
  • 原文地址:https://www.cnblogs.com/woaixihongshi/p/8194206.html
Copyright © 2011-2022 走看看