HTTP认证之基本认证——Basic(一)

导航

一、概述

Basic认证是一种较为简单的HTTP认证方式,客户端通过明文(Base64编码格式)传输用户名和密码到服务端进行认证,通常需要配合HTTPS来保证信息传输的安全。

image

二、剖析

1.当打开需要认证的页面时,会弹出一个对话框,要求输入用户名和密码

image

2.使用Fiddler监听请求,可以看到在未进行认证或认证失败的情况下,服务端会返回401 Unauthorized给客户端,并附带Challenge(质询),即在Response Header中添加WWW-Authenticate标头,浏览器识别到Basic后弹出对话框
Realm表示Web服务器中受保护文档的安全域(比如公司财务信息域和公司员工信息域),用来指示需要哪个域的用户名和密码,用" "包括起来(截图中没有,但最好加上)。

3.输入正确的用户名和密码,认证成功后,浏览器会将凭据信息缓存起来,那么以后再进入时,无需重复手动输入用户名和密码。
查看HTTP请求,可以看到Request Header中添加了Authorization标头,格式为:Authorization: <type> <credentials>

  • 类型为“Basic”
  • 凭证为“MTIzOjEyMw==”,是通过将“用户名:密码”格式的字符串经过的Base64编码得到的。而Base64不属于加密范畴,可以被逆向解码,等同于明文,因此Basic传输认证信息是不安全的

三、缺陷

1.用户名和密码明文(Base64)传输,需要配合HTTPS来保证信息传输的安全。
2.即使密码被强加密,第三方仍可通过加密后的用户名和密码进行重放攻击。
3.没有提供任何针对代理和中间节点的防护措施。
4.假冒服务器很容易骗过认证,诱导用户输入用户名和密码。
接下来,我会带大家一起去了解更为安全的摘要认证——Digest。

posted @   xiaoxiaotank  阅读(42152)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
点击右上角即可分享
微信分享提示