1、HTML实体编码
浏览器接收到页面数据,于是开始进行HTML 解析,构造DOM树。HTML 的分析器只能识别特定的词法规则,才能构建起DOM 树,这一块,HTML 不会做解码的工作,因为它做不了。
<img src%26%23x3d%3B"test"> (对=号进行了一次实体编码后再进行了一次URL编码)
因为正确的语法是 src=value 只有这样的时候,HTML解析器才会认为src是标签img的一个属性,而value是这个属性的值。
一个HTML解析器作为一个状态机,他从输入流中获取字符并且按照转换规则转换到另一种状态。在解析的过程中会经过4个状态分别是
1)标签开始状态
2)标签名状态
3)前属性名状态
4)数据状态
2、HTML字符实体
一个字符实体(Character Entity)分成三部分:第一部分是一个&符号,英文叫ampersand;第二部分是实体(Entity)名字或者是#加上实体(Entity)编号;第三部分是一个分号。
比如,要显示小于号,就可以写<或者<。
用实体(Entity)名字的好处是比较好理解,一看lt,大概就猜出是less than的意思,但是其劣势在于并不是所有的浏览器都支持最新的Entity名字。而实体(Entity)编号,各种浏览器都能处理。
注意:Entity是区分大小写的。
如何显示空格
通常情况下,HTML会自动截去多余的空格。不管你加多少空格,都被看做一个空格。比如你在两个字之间加了10个空格,HTML会截去9个空格,只保留一个。为了在网页中增加空格,你可以使用 表示空格。
3、HTML字符实体编码
在HTML中,默写字符是预留的,比如说html中不可以使用“<”和“>”;因为浏览器可能会误认他们是标签的开始或者结束。所以在html中应该使用对应的字符实体。在HTML实体编码中可能有一些字符是没有实体名称的,但是我们可以用实体编号来引用。
4、HTML字符引用
字符引用包括字符值引用和字符实体引用;字符值医用对应这符号的实体编号,而字符实体引用对应的是实体名。字符实体引用也被叫做“实体引用”或者“实体”。
HTML中的五类元素
1)空元素;不能容纳任何内容(因为他们没有闭合标签,没有内容能够放在开始标签和闭合标签中间)比如说< area >,< br>,< base >等等
2)原始文本元素;原始文本元素是可以容纳文本的。有< script>,< style >
3)RCDATA元素,可以容纳文本和字符引用。有< textarea >和< title >
4)外部元素;可以痛啊文本,字符引用,CDATA段以及其他元素注释。例如MathML命名空间或者SVG命名空间的元素
5)基本元素;可以容纳文本、字符引用,其他元素和注释;也就是除了以上4种以外的元素。
5、URL解析
URL解析器也是一个状态机模型,从输入流中进来的字符可以引导URL解析器转换到不同的状态;
URL资源类型必须是ASCII字母,不然就会进入“无类型”状态。简单来说就是不可以将协议也写成编码;并且在URL编码过程中使用utf-8编码类型来编码每一个字符,如果尝试将URL连接做了其他编码类型的编码,URL解析器就不会正确识别。
浏览器解析URL过程:
1) 用户输入 URL 地址。
2 ) 对 URL 地址进行 DNS 域名解获得IP地址。
3 ) 建立 TCP 连接(三次握手)。
4 ) 浏览器向 web 服务器发送一个 HTTP 请求报文。
5 ) 服务器返回 HTTP 响应报文给客户端。
6 ) 关闭 TCP 连接(四次挥手)。
7 ) 浏览器解析文档资源并渲染页面。
6、JavaScript解析
(1)在解析外部JavaScript文件时(包括下载该文件)时,页面的处理会暂时停止。
(2)在包含外部JavaScript文件时,必须将src属性设置为指向相应文件的url。这个文件可以是与包含它的页面位于同一个服务器上的文件,也可以是其他任何域中的文件。
(3)所有<script>元素都会按照他们在页面中出现的先后顺序依次被解析。在不使用defer和asysnc属性的情况下,只有在解析完前面<script>元素中的代码之后,才会开始解析后 面<script>元素中的代码。
(4)由于浏览器会先解析完不使用defer属性的<script>元素中的代码,然后再解析后面的内容,所以一般应该把<script>元素放在文件页面最后,即主要内容后面,</body>标签 前面。
(5)使用defer属性可以让脚本在文档完全呈现之后在执行。延迟脚本总是按照指定它们的顺序执行。
(6)使用async属性,可以表示当前脚本不必等待其他脚本,也不必阻塞文档呈现。不能保证异步脚本按照它们在页面中出现的顺序执行。
在kali上线安装一下beef-xss
1.在命令行中输入
apt install beef-xss
2.安装成功后,直接运行就可以了
beef-xss
3.使用浏览器访问,在输入框中输入
192.168.121.135:3000/ui/panel
然后输入账号和密码,默认账号就是beef,密码是自己设置的密码。
搭建galleryCMS的服务器。
1.将解压包解压到phpstudy_pro/WWW目录下面,找到文件application/config/database.php文件,修改文件中的数据库的用户名和密码为自己本机上的用户名和密码一样。
2.打开服务器和数据库,新增一个网站,将解压的GalleryCMS了路径放到根目录下面,域名设置为文件名。重启Apache服务和MySQL。