0

0

浏览器Lexer与XSS-HTML编码_html/css_WEB-ITnose

php中文网

php中文网

发布时间:2016-06-21 08:52:20

|

1436人浏览过

|

来源于php中文网

原创

0×00 简介

0×01 解码过程总述

0×02 浏览器中的词法分析

0×03 HTML编码与HTML解析

0×04 常见误区

立即学习前端免费学习笔记(深入)”;

0×05 浏览器有趣的容错行为

0×06 结语

*原创作者:VillanCh

0×00 简介

编码问题一直是一个痛点,在wooyun有一篇XSS编码的文章,讲到一些痛点,既然准备再次完成一篇对XSS中的编码讲解,同时也对得起这个文章的名字,本文就比较系统的讲一下浏览器Lexer中HTML编码处理的问题与XSS的html编码原理剖析。

0×01 解码过程总述

在开始XSS之前,我们如果不清楚编码解码的过程,将会对XSS造成非常大的困难,不懂得编码而乱插一气,如果你是自动化工具还好但是如果你是手动XSS,那么你可就遭殃了,运气好做出来,运气不好就怎么样也解决不了编码问题了。

了解编码过程首先从浏览器解析来讲吧

对浏览器解析HTML有过了解的同学,肯定是清楚浏览的的这些工具原理,一般来讲浏览器通过Lexer-Parser来解析生成Dom树然后再对CSS元素进行渲染,最后执行javascript(浏览器脚本),但是为什么要讲这一部分呢?原因就是这和解码的顺序是有关系的!

举一个简单的例子吧:在HTML(非XHTML)环境下如果你的xss输出点在

0×02 浏览器中的词法分析

熟悉编译原理的读者可以自由选择快速略过第一第二段或者短暂复习一下。

Tome
Tome

先进的AI智能PPT制作工具

下载

关于一个计算机工作人员是否需要学习编译原理这个话题,我相信大家各持己见。但是我相信如果你是要做一个优秀的程序员或者是IT工作者,编译原理不一定要精通,但是至少应该有所了解,限于篇幅的原因,我并不打算在这里讲太多的编译原理的只是简单提及一下让大家知道编译原理到底是干什么的,在浏览器中是怎么被应用的。

Parser-Lexer Combination(解析器-词法分析器)

这个结构负责对html文档进行解析,解析的过程分为两个过程:词法分析和语法分析

本部分,主要讲词法分析部分

词法分析就是将输入的句子(语句,内容)分解为有顺序的单词和符号:具体例子就是如果输入1+2-3,那么经过词法分析,就应该按顺序得到五个token:分别是1(int),+(option),2(int),-(option),3(int)。然后得到的结果交给语法分析进行上下文无关语法判别。

如果有兴趣了解如何实现词法分析,可以参考编译原理及实践这本书。

那么在浏览器中,词法分析的特性还是值得注意的,例如,它会自动跳过HTML中的空格和换行或者制表符,这样也就是有些条件下仅仅是多个空格或者换行符制表符就能起到过waf,的原理了,(但是现在这种bypass方法已经很out了)。除此之外呢,在词法分析中,也许还会忽略注释部分,那么大家是不是又有一些想法了呢?那么,我们结合以前XSS的经验,笔者结合符号算法的简单叙述,大家可以理解检测一下自己的猜测是不是正确。

众所周知,我们的浏览器解析html时,是把

浏览器Lexer与XSS-HTML编码_html/css_WEB-ITnose

这个标签解析成

浏览器Lexer与XSS-HTML编码_html/css_WEB-ITnose

这六个符号(token)的。

那么仅仅就是这么简单么?答案当然是否定的。

解析过程简单例子:

1.    在解析

2.    然后解析到

3.    找到标签名,状态变为Tag name state,这个状态就表示已经识别了标签名,

4.    然后知道读取到最近的一个>时,结束tag name state的状态,重新进入Data State。

如果嵌套有标签的话重复上述解析步骤,关于

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

9

2026.01.30

c++ 字符串格式化
c++ 字符串格式化

本专题整合了c++字符串格式化用法、输出技巧、实践等等内容,阅读专题下面的文章了解更多详细内容。

9

2026.01.30

java 字符串格式化
java 字符串格式化

本专题整合了java如何进行字符串格式化相关教程、使用解析、方法详解等等内容。阅读专题下面的文章了解更多详细教程。

8

2026.01.30

python 字符串格式化
python 字符串格式化

本专题整合了python字符串格式化教程、实践、方法、进阶等等相关内容,阅读专题下面的文章了解更多详细操作。

3

2026.01.30

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

20

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

17

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

19

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

3

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Javascript趣味课堂
Javascript趣味课堂

共49课时 | 11.1万人学习

极客学院ASP.NET视频教程
极客学院ASP.NET视频教程

共90课时 | 20.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号