从Basic Authentication认知cookie和session

Web身份验证全解析:CookieSession、Base64与Token的原理、对比与实战避坑 身份验证是Web应用安全与用户体验的基石,其核心在于确认用户身份并授予相应权限。其基本原理涉及客户端与服务器之间的凭证交换与验证。从技术价值看,稳健的身份验证机制能有效保护用户数据、防止未授权访问,并支撑复杂的业务逻辑。在应用场景上,从传统的服务端渲染应用到现代前后端分离架构,乃至分布式微服务,都需要适配的身份验证方案。本文聚焦于CookieSession、Base64编码Token这四项关键技术,深入剖析其工作原理、安全特性典型应用场景,并针对常见的“iframe跨域Cookie失效”、“Sessi 阅读详情

HTTP Basic Authentication

查看wikipedia的解释,http://en.wikipedia.org/wiki/Basic_authentication_scheme

HTTP Basic Authentication即Basic access authentication

概念:In the context of an HTTP transaction, the basic access authentication is a method designed to allow a web browser, or other client program, to provide credentials – in the form of a user name and password – when making a request.

 

 在执行会话之前,用户名和密码username:password对作为一个字符串经过Base64算法加密编码,之后经Base64编码的字符串被发送到接收端,接收端服务器应用解码得到用户名和密码。

Base64加密算法很简单,只能防止直接查看得到用户名和密码,解码是十分容易的。因此,编码的初衷不是出于安全性的考虑,而是为了将用户名和密码中可能存在的一些不被HTTP兼容的字符(non-HTTP-compatible characters)编码为HTTP兼容的字符!

 

缺点:因为用户名和密码几乎相当于明文传输,所以存在严重的安全性问题。因此Basic Authentication基本用在可信任网络或进行测试时用!

digest access authentication被制定来更加安全的进行认证。

 

用户名和密码对 如guest:guest经Base64编码后得到Z3Vlc3Q6Z3Vlc3Q=,并被放入认证头Authorization中

形如Authorization: Basic Z3Vlc3Q6Z3Vlc3Q=

 

 

Example:typical transaction between an HTTP client and an HTTP server running on the local machine (localhost). 

  • The client asks for a page that requires authentication but does not provide a user name and password. Typically this is because the user simply entered the address or followed a link to the page.
  • The server responds with the 401 response code and provides the authentication realm.
  • At this point, the client will present the authentication realm (typically a description of the computer or system being accessed) to the user and prompt for a user name and password. The user may decide to cancel at this point.
  • Once a user name and password have been supplied, the client adds an authentication header (with value base64encode(username+":"+password)) to the original request and re-sends it.
  • In this example, the server accepts the authentication and the page is returned. If the user name is invalid or the password incorrect, the server might return the 401 response code and the client would prompt the user again.

Note: A client may pre-emptively send the authentication header in its first request, with no user interaction required.

方法:在http://url中间加入用户名和密码对,例如:http://guest:guest@www.baidu.com即可!

PS:要在发送请求的时候添加HTTP Basic Authentication认证信息到请求中,有两种方法:

 

 

攻击过程:

因为是tomcat服务器,因此cookie中为JSESSIONID,初始截获请求没有发现Authorization头,因此修改JSESSIONID发送给服务器,因为是错误的cookie,服务器返回401响应,并要求输入用户名和密码,再截获会发现Authorization头出现了,但是问题是并没有重新生成新的JSESSIONID!!——因为最开始存在的cookie是存在浏览器内存中和服务器端的,当服务器端接收到错误的JSESSIONID(亦即cookie)时,会返回401要求认证,这时我填入用户名和密码,浏览器自动加入内存已有的cookie(未修改前的)。

这时有了Authorization头,在截获请求时改变JSESSIONID,因为用户名密码是正确的,所以服务端接收后返回的是200 ok响应,但是会重新分配一个新的JSESSIONID给用户,此时JSESSIONID才会改变。

从这个过程不难看出,在已登录并正常通信后,客户端服务端的Authorization头是可有可无的,只要JSESSIONID不变!

 

认识到这一点,按部就班就可以达成第一步攻击!第二步只需要篡改请求中的JSESSIONID,并将Authorization头中的用户名和密码改变为需要登录的用户名密码对即可。或者清空浏览器中的cookie(JSESSIONID和Authorization头),再用上面所述在url中添加用户名和密码即可!!

 

 

以下转自:http://www.cnblogs.com/QLeelulu/archive/2009/11/22/1607898.html

 

访问需要HTTP Basic Authentication认证的资源的各种语言的实现

下面来看下对于第一种在请求中添加Authorization头部的各种语言的实现代码。

.NET下

你当然也可以使用HttpWebRequest或者其他的类来发送请求。

然后是Python的:

 

reference:http://en.wikipedia.org/wiki/Basic_authentication_scheme

http://topic.csdn.net/u/20100111/19/3da6591b-5090-4891-af14-c8ad94181767.html

http://www.cnblogs.com/QLeelulu/archive/2009/11/22/1607898.html

http://www.cnblogs.com/cmt/archive/2010/05/13/1733904.html

 

再来是PHP的:

还有flash的AS3的:

还有Ruby On Rails的:

JavaScript的:

PS:HTTP Basic Authentication对于跨域又要发送post请求的用JavaScript是实现不了的(注:对于Chrome插件这类允许通过AJAX访问跨域资源的,是可以的)。。

HTTP认证演进:从Basic到JWT与OAuth 2.0的完整指南 认证是Web应用安全的核心基础,它解决了HTTP无状态协议下的用户身份识别问题。其原理是通过凭证验证机制,在客户端与服务器之间建立信任关系。这项技术的价值在于为分布式系统提供可扩展的身份管理方案,并保障API通信的安全边界。当前主流应用场景涵盖传统Web登录、前后端分离架构、微服务间调用及第三方平台集成。本文聚焦JWTOAuth 2.0等现代认证协议,深入解析其实现机制与工程实践中的关键考量。 阅读详情

相关推荐

python restful api

restful api安全验证问题没有绝对的安全,这个话题很深, 下文都是自己的一些理解,水平有限,如有勘误,希望大家予以指正。由于 RESTful Api 是基于 Http 协议的 Api,是无状态传输,所以 只要用户身份有关的 请求 都会带上身份认证信息。(很多时候客户端事先并不知道某个 api 后期会不会加入身份判断,所以我们一般都会选择每个请求都会带上认证信息,如果有的话。)Http B...

王冠hurt的博客 2042

Silhouette持久化策略:CookieSessionBearer Token认证器对比指南

**Silhouette**是Play Framework应用的身份验证库,支持多种认证方法。在构建现代Web应用时,选择合适的持久化策略对安全性用户体验至关重要。本文将深入对比Silhouette的三种主要认证器:CookieSessionBearer Token,帮助你做出明智的技术选择。🚀 ## 为什么选择正确的认证策略很重要? 认证策略直接影响应用的安全性、可扩展性用户体验。

gitblog_00547的博客 467

Web认证全解析:从Session、JWT到OAuth 2.0的安全实践与选型指南

认证是网络安全与系统可信赖的基石,它通过验证用户身份确保资源访问的合法性。其核心原理涉及凭证验证、会话管理状态维持,旨在解决‘你是谁’这一根本问题。在技术价值层面,一个健壮的认证体系能有效防御数据泄露、身份盗用等安全威胁,为系统构建第一道防线。从基础概念切入,常见的认证技术包括基于Session-Cookie的传统方案、无状态的JWT令牌以及用于委托授权的OAuth 2.0框架。这些技术广泛应用于Web应用、API服务跨平台单点登录等场景。本文将深入探讨认证机制的设计原则,对比分析Session与JWT

weixin_33904756的博客 379

HTTP基础认证Basic Authentication

HTTP基础认证Basic Authentication Basic Authentication是一种HTTP访问控制方式,用于限制对网站资源的访问。这种方式不需要CookieSession,只需要客户端发起请求的时候,在头部Header中提交用户名密码就可以。如果没有附加,会弹出一个对话框,要求输入用户名密码。这种方式实施起来非常简单,适合路由器之类小型系统。但是它不提供信息加密措施,通常都是以明文或者base64编码传输。 在网络嗅探中,Basic Authentication信息非常有价值

大学霸__IT达人 863

HTTP Authentication Methods and Best Practices

【代码】HTTP Authentication Methods and Best Practices。

allway2的博客 362

4种常见的鉴权方式及说明

一、什么是鉴权 鉴权(authentication)是指验证用户是否拥有访问系统的权利。传统的鉴权是通过密码来验证的。这种方式的前提是,每个获得密码的用户都已经被授权。在建立用户时,就为此用户分配一个密码,用户的密码可以由管理员指定,也可以由用户自行申请。这种方式的弱点十分明显:一旦密码被偷或用户遗失密码,情况就会十分麻烦,需要管理员对用户密码进行重新修改,而修改密码之前还要人工验证用户的合法身份...

sinat_33255495的博客 5万+

鉴权技术

鉴权技术 一、HTTP Basic Authentication 这种授权方式是浏览器遵守http协议实现的基本授权方式。HTTP协议进行通信的过程中,HTTP协议定义了基本认证认证允许HTTP服务器对客户端进行用户身份证的方法。 1、客户端向服务器请求数据此时,此时客户端尚未被验证。 Get /index.html HTTP/1.0 Host:www.google.com 2、服务器向客户端发送验证请求代码401,(WWW-Authenticate: Basic realm=”google.com”

skyyemperor的博客 1728

应用的认证授权(基本认证session-cookie认证、token认证及OAuth2.0授权)

前后端常见鉴权方式: 基于cookie认证: HTTP Basic Authentication基本认证 session认证 token(令牌)认证 JWT(JSON Web Token)

you are sherlocked by me! 2271

Atitit 常用的登录认证法 目录 2. 表单验证 1 3. OAuth 认证 1 4. Web票据模式验证 1 4.1. Token验证 1 4.2. Cookie-Session 认证 1

Atitit 常用的登录认证法 目录 2. 表单验证 1 3. OAuth 认证 1 4. Web票据模式验证 1 4.1. Token验证 1 4.2. Cookie-Session 认证 1 4.3. Cookie-Session 改造版 2 4.4. 基于JWT的Token认证 2 5. HTTP Basic Authentication 2 6. Ot...

attilax的专栏 273

Spring Security Authentication令牌:从核心原理到实战调试与自定义扩展

身份验证是现代Web应用安全的基础,其核心在于验证用户身份并建立可信的会话上下文。在Java生态中,Spring Security通过Authentication对象实现这一机制,该对象作为安全凭证的载体,封装了身份主体、凭证及权限信息。其设计遵循了认证与授权分离的原则,通过SecurityContext与ThreadLocal绑定,实现了请求级别的安全状态透明传递。这一机制为构建灵活、可扩展的安全架构提供了基础,广泛应用于表单登录、JWT令牌验证及OAuth2集成等场景。本文聚焦于Authenticati

weixin_33889245的博客 408

浅谈认证鉴权

认证与鉴权

weixin_51955084的博客 2947

常见登录鉴权方式全面解析:从基础到进阶实践

常见登录鉴权方式全面解析:从基础到进阶实践

嗨,欢迎来到我的 CSDN 博客小天地!一名深耕多年的技术发烧友。在这里,我将把日常工作中积累的宝贵经验,从复杂架构设计的精妙之处,到代码优化的实战技巧,毫无保留地分享给大家。 973

Node 缓存、安全与鉴权

1、Cookie 1.1 Set-Cookie 1.2 Cookie 的生命周期 1.3 如何保证Cookie安全性 1.4 Cookie 的作用域 Domain 属性 Path 属性 1.5 SameSite attribute 1.6 JS操作Cookie 1.7 安全性 2、 Node缓存 2.1 缓存作用 2.2 缓存类型 强制缓存 对比缓存(协商缓存) 3、Node鉴权 3.1 HTTP Basic Authentication 3.2 session-cookie 3.2.1 cookie 3.

yolo 1257

认证授权,Identity-vs-Authorization

JAI :Identity vs Authorization 入门指南系列之一 前言 Identity 是识别你是谁,Authorization 是判断你能干什么。Identity vs Authorization 从软件诞生之初在不断进化: 基本口令, umask , X.500, LDAP , SAML , CAS , OAuth2.0 , OPenID … 目前前后端分离已成为互联网项目开发的业界标准, 其核心思想是前端页面通过 AJAX 调用后端的 API 接口并使用 JSON 数据进行交互。

北京符节科技有限公司 627

HTTP Response Splitting攻击探究

学习WebGoat第一章General第一小节:HTTP Basics:使用Proxy软件(例如Webscarab)来截断浏览器(客户端)Server之间的HTTP通信,之后任意篡改得到预期结果即可。第二小节:HTTP Splitting:(其实应该为HTTP Response Splitting)分为两步——1、HTTP Splitting;2、Cache PoisoningHTTP Response Splitting介绍:“HTTP Response Splitting” is a new appl

4175
上一篇: 各种编程语言中的指针和引用
下一篇: JSESSIONID、SESSION、cookie
fallinsky
博客等级 码龄18年 24粉丝 54原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值