Special HTTP headers
字典与工具
更改位置的头
重写 IP 源:
X-Originating-IP: 127.0.0.1
X-Forwarded-For: 127.0.0.1
X-Forwarded: 127.0.0.1
Forwarded-For: 127.0.0.1
X-Forwarded-Host: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-ProxyUser-Ip: 127.0.0.1
X-Original-URL: 127.0.0.1
Client-IP: 127.0.0.1
X-Client-IP: 127.0.0.1
X-Host: 127.0.0.1
True-Client-IP: 127.0.0.1
Cluster-Client-IP: 127.0.0.1
Via: 1.0 fred, 1.1 127.0.0.1
Connection: close, X-Forwarded-For
(检查逐跳头)
重写 位置:
X-Original-URL: /admin/console
X-Rewrite-URL: /admin/console
逐跳头
逐跳头是设计用于由当前处理请求的代理处理和消费的头,与端到端头相对。
Connection: close, X-Forwarded-For
HTTP 请求走私
Content-Length: 30
Transfer-Encoding: chunked
缓存头
服务器缓存头:
X-Cache
在响应中可能有值miss
当请求未被缓存,值hit
当它被缓存在头
Cf-Cache-Status
中有类似的行为Cache-Control
指示资源是否被缓存以及下次缓存资源的时间:Cache-Control: public, max-age=1800
Vary
通常在响应中使用,以 指示额外的头,这些头被视为 缓存键的一部分,即使它们通常不作为键。Age
定义对象在代理缓存中存在的时间(以秒为单位)。Server-Timing: cdn-cache; desc=HIT
也指示资源已被缓存
本地缓存头:
Clear-Site-Data
: 指示应删除的缓存的头:Clear-Site-Data: "cache", "cookies"
Expires
: 包含响应应过期的日期/时间:Expires: Wed, 21 Oct 2015 07:28:00 GMT
Pragma: no-cache
与Cache-Control: no-cache
相同Warning
:Warning
一般 HTTP 头包含有关消息状态可能存在问题的信息。响应中可能出现多个Warning
头。Warning: 110 anderson/1.3.37 "Response is stale"
条件请求
使用这些头的请求:
If-Modified-Since
和If-Unmodified-Since
仅在响应头Last-Modified
包含不同时间时才会返回数据。使用
If-Match
和If-None-Match
的条件请求使用 Etag 值,因此如果数据(Etag)已更改,Web 服务器将发送响应的内容。Etag
是从 HTTP 响应中获取的。Etag 值通常是 基于响应的内容计算的。例如,
ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"
表示Etag
是 37 字节 的 Sha1。
范围请求
Accept-Ranges
: 指示服务器是否支持范围请求,如果支持,则以哪种单位表示范围。Accept-Ranges: <range-unit>
Range
: 指示服务器应返回文档的哪一部分。If-Range
: 创建一个条件范围请求,仅在给定的 etag 或日期与远程资源匹配时满足。用于防止从不兼容版本的资源下载两个范围。Content-Range
: 指示部分消息在完整消息中的位置。
消息体信息
Content-Length
: 资源的大小,以字节的十进制数表示。Content-Type
: 指示资源的媒体类型Content-Encoding
: 用于指定压缩算法。Content-Language
: 描述面向受众的人类语言,以便允许用户根据用户自己的首选语言进行区分。Content-Location
: 指示返回数据的备用位置。
从渗透测试的角度来看,这些信息通常是“无用的”,但如果资源被 保护 由 401 或 403,并且你能找到某种 方法 来 获取 这些 信息,这可能会是 有趣的。
例如,在 HEAD 请求中 Range
和 Etag
的组合可以通过 HEAD 请求泄露页面的内容:
带有头
Range: bytes=20-20
的请求和包含ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"
的响应泄露了字节 20 的 SHA1 为ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y
服务器信息
Server: Apache/2.4.1 (Unix)
X-Powered-By: PHP/5.3.3
控制
Allow
: 此头用于传达资源可以处理的 HTTP 方法。例如,它可能被指定为Allow: GET, POST, HEAD
,表示资源支持这些方法。Expect
: 客户端用于传达服务器需要满足的期望,以便请求能够成功处理。一个常见的用例涉及Expect: 100-continue
头,表示客户端打算发送大量数据负载。客户端在继续传输之前会寻找100 (Continue)
响应。此机制有助于通过等待服务器确认来优化网络使用。
下载
Content-Disposition
头在 HTTP 响应中指示文件应显示为 内联(在网页内)还是作为 附件(下载)。例如:
这意味着名为 "filename.jpg" 的文件旨在被下载和保存。
安全头部
内容安全策略 (CSP)
Content Security Policy (CSP) Bypass受信任的类型
通过 CSP 强制实施受信任的类型,应用程序可以防止 DOM XSS 攻击。受信任的类型确保只有符合既定安全政策的特定构造对象可以用于危险的 Web API 调用,从而默认保护 JavaScript 代码。
X-Content-Type-Options
此头部防止 MIME 类型嗅探,这种做法可能导致 XSS 漏洞。它确保浏览器尊重服务器指定的 MIME 类型。
X-Frame-Options
为了对抗点击劫持,此头部限制了文档如何嵌入在 <frame>
、<iframe>
、<embed>
或 <object>
标签中,建议所有文档明确指定其嵌入权限。
跨源资源策略 (CORP) 和跨源资源共享 (CORS)
CORP 对于指定哪些资源可以被网站加载至关重要,减轻跨站泄漏。另一方面,CORS 允许更灵活的跨源资源共享机制,在某些条件下放宽同源策略。
跨源嵌入者策略 (COEP) 和跨源打开者策略 (COOP)
COEP 和 COOP 对于启用跨源隔离至关重要,显著降低了类似 Spectre 攻击的风险。它们分别控制跨源资源的加载和与跨源窗口的交互。
HTTP Strict Transport Security (HSTS)
最后,HSTS 是一种安全功能,强制浏览器仅通过安全的 HTTPS 连接与服务器通信,从而增强隐私和安全性。
参考文献
Last updated