目录
全局属性(global attributes)----是所有元素都可以使用的属性,可以加在任意一个网页元素上面
2、限制&符 ---防止实体编码转义、把实体编码过滤了,没有&符实体编码就不成立
3、限制 \ ---因为Unicode编码一般 \u 、限制了 \ 则Unicode编码也转义不了
html5
网页元素的属性
网页元素的属性(attribute)可以定制元素的行为,不同的属性会导致元素有不同的行为、元素属性的写法是 HTML 标签内部的“键值对”
<html lang="en">
上面代码中,<html>
标签内部的键值对lang=“en”
,就称为html
元素的属性。属性名为lang
,属性值为en,此处的lang不区分大小写
全局属性(global attributes)----是所有元素都可以使用的属性,可以加在任意一个网页元素上面
常见的全局属性有:id、class、title、tabindex、accesskey、style、hidden、lang,dir、contenteditable、spellcheck、data-属性、事件处理属性
这里只对id、class做介绍
id----元素在网页内唯一标识符
<p id="p1"></p>
<p id="p2"></p>
<p id="p3"></p>
id的属性值必须全局唯一且属性的值不能包含空格
好处---便于在js中找到精准抓取元素
class---用来对网页元素进行分类
<p class="a"></p>
<p class="a"></p>
<p class="a1 a2 a3"></p>
第一个p和第二个是一类,class属性相同、
元素可以同时有多个 class,它们之间使用空格分隔
class是样式,定义一个样式可以重复使用
在js操作的时候抓取出来的是一个数组
tabindex
简单来说就是当你按下TAB的时候能不能选中这个元素(焦点在不在这个元素上)
<p tabindex="0"> --这段文字获得焦点
这样这段文字就可以获得焦点了
HTML字符编码/HTML实体编码
可以通过一些编码的形式来被html识别到
网页包含了大量的文字,浏览器必须知道这些文字的编码方法,才能把文字还原出来
字符的数字表示法:
字符的码点表示法是&#N;(十进制,N
代表码点)或者&#xN;(十六进制,N
代表码点)
这里是使用ASCII码,hello也可根据下面这个简单的推理出来(详细的可以查ASCII码表,常用的需要记忆)
<p>hello</p>
<p>hello</p> --十进制
<p>hello</p> --十六进制
Bin(二进制) Oct(八进制) Dec(十进制) Hex(十六进制) 缩写/字符 解释
0100 0001 0101 65 0x41 A 大写字母A
0110 0001 0141 97 0x61 a 小写字母a
字符的实体表示法:
HTML 为一些特殊字符,规定了容易记忆的名字,允许通过名字来表示它们,下面给大家列出几个常用的(详细的可以查阅资料)
<:<
>:>
":"
':'
空格:
html实体编码运用的例子:
这里是在img下输出的、GET是一个输入
replace在这把数组里的字符全都替换成空了,在输入的时候替换了
1、( )括号 --- 为了让xss漏洞不执行
这里可以看到在alert弹窗下,没有了括号便无法执行、
而 ` ` 可以绕过括号执行
2、限制&符 ---防止实体编码转义、把实体编码过滤了,没有&符实体编码就不成立
3、限制 \ ---因为Unicode编码一般 \u 、限制了 \ 则Unicode编码也转义不了
下图\u0061\u006c…………其实就是alert弹窗的转义,限制了 \ 则也无法转义
上面写了两个 \\ 是为了防止转义,写了两个再次转义将其变成了普通字符
4、限制大小于号
<script> ---可以正常执行
script ---限制了大小于号可见这是执行不了的
5、限制 ' (单引号) ---不让英文执行
alert(1) ---数字可以不用' '(单引号)
alert('abc') ---英文的时候就需要用' ' (单引号)
这里就把常见的能想到的都过滤掉了(实体编码、Unicode编码、<>、' '、()),这样要输出的东西是几乎很难很难成功的
img标签
img标签起到一个加载图片的一个作用(可以用相对路径或者绝对路径)
而里面有一个onerror的一个函数(是js里的一个函数),当前面加载出错的时候就自动出发后面的一个函数,例如下面,img写了一个没有的“1”,则加载错误后将自动触发后面的弹窗
img标签可以通过onerror触发xss漏洞,有一定危险性(危险性来自于img后面的onerror)
<img src="1" onerror=alert(1) alt="">
链接标签
允许用户在页面上,从一个网址跳转到另一个网址,从而把所有资源联系在一起
a
链接通过<a>
标签表示,用户点击后,浏览器会跳转到指定的网址。
href
href
属性给出链接指向的网址
支持js函数
跳转了,也弹窗了
svg
用于画图
但是他onload属性是支持js的,可以用于触发弹窗
<script>
还有下面一些其他属性,大部分跟 JavaScript 语言有关,可以参考相关的 JavaScript 教程。
async:该属性指定 JavaScript 代码为异步执行,不是造成阻塞效果,JavaScript 代码默认是同步执行。
defer:该属性指定 JavaScript 代码不是立即执行,而是页面解析完成后执行。