freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

HTTP 响应中的字符编码和 XSS 漏洞利用
2024-07-20 22:42:18

引言

你是否注意到以下 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 文档时,会根据以下优先级来确定字符编码:

  1. HTML 文档开头的字节顺序标记(BOM)

  2. Content-Type标头中的charset属性

  3. HTML 文档中的<meta>标记

# xss # web安全 # xss攻击 # XSS漏洞 # HTTP
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录