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
是响应内容的Sha1值,长度为37字节。
范围请求
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)
响应。此机制有助于通过等待服务器确认来优化网络使用。
下载
HTTP响应中的
Content-Disposition
标头指示文件是应该内联显示(在网页内)还是作为附件(下载)。例如:
这意味着名为"filename.jpg"的文件旨在被下载并保存。
安全头部
内容安全策略(CSP)
受信任类型
通过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 连接与服务器通信,从而增强隐私和安全性。
参考资料
最后更新于