找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 234|回复: 3

【HTTP】服务器向你发起了挑战(Challenge),而提出的条件是……

[复制链接]
发表于 2026-8-4 19:28:54 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
本帖最后由 cattenlinger 于 2026-8-4 19:28 编辑

Challenge 之喻

想象一下顺应挚友邀约进入高档写字楼,被门口的闸机拦住了…… 嗯,这就是 Challenge:你尝试直接达成目的,却又被额外的原因阻拦了。

这个“挑战者”可以是任何存在:保安、闸机、门禁系统,甚至是路过盘查的警察。

何为 Challenge?

虽说认证 (Authentication) 和授权 (Authorization) 是两个概念,但只要管守资源的流程中对其中一个不确定,系统开发者便可以插入 Challenge,以要求更详细的信息。

在对服务器发起 HTTP 请求,尝试访问受保护资源时,若无法确认是否有权限,安全措施便会拒绝请求。而一些更人性化的设计,会在拒绝时附上一段信息:

WWW-Authenticate: Basic realm="Protected Resource"

礼貌的服务器君:这位客人,在下无法确认您的要求合理性,若您要继续,请出示关于您能访问 Protected Resource 的 Basic 令牌以作证明。

作为尊贵客人的您,拿出朋友提前准备好的神奇咒语,附在新的要求上:

Authorization: Basic c2VuYmFpOjExNDUxNDE5MTk4MTA

这两个 HTTP 字段的交换,便是浏览器原生用户名密码弹窗登陆时所发生的事情,例如访问一些路由器的 HTTP 后台时。

当然,大多数情况下,浏览器环境下的人机交互为了更加自由的信息呈现,都会使用另外的方式来实现人类友好的 Challenge:使用各种各样装饰的登陆网页、SSO (Single Sign-On),甚至扫描机器可读码登录。
通过标准 HTTP 头的传递,更多是为了在方便自动化的同时,让人类有在意外/例外情况下介入的机会。

延伸参考

回复

使用道具 举报

发表于 2026-8-4 19:46:36 | 显示全部楼层
好像我见过的更多的「挑战」是验证码、reCaptcha、二次验证之类的东西。
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2026-8-4 21:31:42 | 显示全部楼层
0xAA55 发表于 2026-8-4 19:46
好像我见过的更多的「挑战」是验证码、reCaptcha、二次验证之类的东西。

以上这些的确就是现代最常见的几种对自动化系统和人用的 Challenge 方式。Challenge 是协议安全方面很常见的概念,只要涉及到验证,就几乎都是围绕如何设计“挑战”展开的。

最近写的服务器代码里暂时置空登录部分,直接用了浏览器的内置弹窗验证,便写篇随笔记下来这临时取巧的手段。
回复 赞! 靠!

使用道具 举报

发表于 2026-8-5 13:10:01 | 显示全部楼层
cattenlinger 发表于 2026-8-4 21:31
以上这些的确就是现代最常见的几种对自动化系统和人用的 Challenge 方式。Challenge 是协议安全方面很常 ...

你让我想起了 HTTP 码里面有个「没付钱」「429 太忙」「这是一个茶壶」
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2026-8-16 12:07 , Processed in 0.025034 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表