HTTP 响应中的字符编码和 XSS 漏洞利用
本文由
创作,已纳入「FreeBuf原创奖励计划」,未授权禁止转载
引言
你是否注意到以下 HTTP 响应中的某些内容?
HTTP/1.1 200 OK
Server: Some Server
Content-Type: text/html
Content-Length: 1337
<!DOCTYPE html>
<html>
<head><title>Some Page</title></head>
<body>
...
根据这段 HTTP 响应,可以推测该 Web 应用程序可能容易受到 XSS 漏洞的影响。这个响应缺少一个关键属性:charset
,这是攻击者利用的关键点。通过更改浏览器假定的字符集,攻击者可以将任意JavaScript
代码注入网站。
字符编码
常见响应头
常见的 HTTP 响应头如下:
HTTP/1.1 200 OK
Server: Some Server
Content-Type: text/html; charset=utf-8
...
字符编码charset=utf-8
charset
:指定文本内容的字符编码。utf-8
:表示使用 UTF-8 编码,兼容 ASCII。
如果Content-Type
标头中缺少charset
属性,浏览器会在 HTML 文档中查找<meta>
标记中的charset
属性来确定编码方式,或者使用字节顺序标记(BOM)。
浏览器字符编码检测
当浏览器接收到 HTML 文档时,会根据以下优先级来确定字符编码:
HTML 文档开头的字节顺序标记(BOM)
Content-Type
标头中的charset
属性HTML 文档中的
<meta>
标记
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录