1.ASCII码
ASCII码是一种将英文字符映射到数字的编码方式。它规定了每个字符对应的唯一数字编码。ASCII码共有128个字符编码,包括大写字母、小写字母、数字、标点符号以及一些特殊字符。
例如,大写字母A的ASCII码值是65,小写字母a的ASCII码值是97,数字0的ASCII码值是48。通过将字符转换为对应的ASCII码值,可以方便地在计算机中进行字符的存储和处理。
Dec Chr Dec Chr Dec Chr Dec Chr Dec Chr Dec Chr Dec Chr Dec Chr
0 NUL 16 DLE 32 SP 48 0 64 @ 80 P 96 `
1 SOH 17 DC1 33 ! 49 1 65 A 81 Q 97 a
2 STX 18 DC2 34 " 50 2 66 B 82 R 98 b
3 ETX 19 DC3 35 # 51 3 67 C 83 S 99 c
4 EOT 20 DC4 36 $ 52 4 68 D 84 T 100 d
5 ENQ 21 NAK 37 % 53 5 69 E 85 U 101 e
6 ACK 22 SYN 38 & 54 6 70 F 86 V 102 f
7 BEL 23 ETB 39 ' 55 7 71 G 87 W 103 g
8 BS 24 CAN 40 ( 56 8 72 H 88 X 104 h
9 TAB 25 EM 41 ) 57 9 73 I 89 Y 105 i
10 LF 26 SUB 42 * 58 : 74 J 90 Z 106 j
11 VT 27 ESC 43 + 59 ; 75 K 91 [ 107 k
12 FF 28 FS 44 , 60 < 76 L 92 \ 108 l
13 CR 29 GS 45 - 61 = 77 M 93 ] 109 m
14 SO 30 RS 46 . 62 > 78 N 94 ^ 110 n
15 SI 31 US 47 / 63 ? 79 O 95 _ 111 o
Dec Chr Dec Chr Dec Chr Dec Chr Dec Chr Dec Chr Dec Chr Dec Chr
0 NUL 16 DLE 32 SP 48 0 64 @ 80 P 96 `
1 SOH 17 DC1 33 ! 49 1 65 A 81 Q 97 a
2 STX 18 DC2 34 " 50 2 66 B 82 R 98 b
3 ETX 19 DC3 35 # 51 3 67 C 83 S 99 c
4 EOT 20 DC4 36 $ 52 4 68 D 84 T 100 d
5 ENQ 21 NAK 37 % 53 5 69 E 85 U 101 e
6 ACK 22 SYN 38 & 54 6 70 F 86 V 102 f
7 BEL 23 ETB 39 ' 55 7 71 G 87 W 103 g
8 BS 24 CAN 40 ( 56 8 72 H 88 X 104 h
9 TAB 25 EM 41 ) 57 9 73 I 89 Y 105 i
10 LF 26 SUB 42 * 58 : 74 J 90 Z 106 j
11 VT 27 ESC 43 + 59 ; 75 K 91 [ 107 k
12 FF 28 FS 44 , 60 < 76 L 92 \ 108 l
13 CR 29 GS 45 - 61 = 77 M 93 ] 109 m
14 SO 30 RS 46 . 62 > 78 N 94 ^ 110 n
15 SI 31 US 47 / 63 ? 79 O 95 _ 111 o
常见ASCII码的大小规则:09<AZ<a~z。
1)数字比字母要小。如 “7”<“F”;
2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;
3)字母A比字母Z要小,并按A到Z顺序递增,如“A”<“Z” ;同理,字母a比字母z要小,“a”<“z”;
4)同个字母的大写字母比小写字母要小32。如“A”<“a” ;
几个常见字母的ASCII码大小: “0”为 48“、A”为65、“a”为97
2.urlcode编码
URL(Uniform Resource Locator,统一资源定位器、定位地址,俗称网页地址,简称网址),是因特网上标准的资源地址,如同在网络上的门牌。
协议(scheme)是浏览器请求服务器资源的方法,上例是https://
的部分,表示使用 HTTPS 协议,常见的有http、https,还有ftp、file、mailto、data等。
主机(host)是资源所在的网站名或服务器的名字,又称为域名。
用户名、密码:这没什么好解释的,就是字面意思。
路径(path)是资源在网站的位置。比如,/path/index.html
这个路径,指向网站的/path
子目录下面的网页文件index.html
。
服务器地址:有的时候你在URL上看到的是域名,其实会通过DNS转为IP地址,所以还是服务器IP地址。
端口紧跟在域名后面,两者之间使用冒号分隔,比如www.example.com:80
。
资源层级文件路径:大部分会隐藏,就是服务器的目录路径,使用"/“区别每一层。
查询:使用”&"连接
片段ID:有的时候被称为“锚点”,一般是指CSS中的id,就是使用浏览器调试时看到的id属性,有时也可通过这个进行XSS或sql注入。
当 URL 路径或者查询参数中,带有中文或者特殊字符的时候,就需要对 URL 进行编码(采用十六进制编码格式)。URL 编码的原则是使用安全字符去表示那些不安全的字符。安全字符,指的是没有特殊用途或者特殊意义的字符。
URL 编码协议规定(RFC3986 协议):URL 中只允许使用 ASCII 字符集可以显示的字符,比如英文字母、数字、和- _ . ~ ! *这 6 个特殊字符。当在 URL 中使用不属于 ASCII 字符集的字符时,就要使用特殊的符号对该字符进行编码,比如空格需要用%20来表示。
URL字符
URL 的各个组成部分,只能使用以下这些字符。
-
26个英语字母(包括大写和小写)
-
10个阿拉伯数字
-
连词号(
-
) -
句点(
.
) -
下划线(
_
)
绕过
URL 字符转义的方法是,在这些字符的十六进制 ASCII 码前面加上百分号(%
)。下面是这18个字符及其转义形式。 -
!
:%21 -
#
:%23 -
$
:%24 -
&
:%26 -
'
:%27 -
(
:%28 -
)
:%29 -
*
:%2A -
+
:%2B -
,
:%2C -
/
:%2F -
:
:%3A -
;
:%3B -
=
:%3D -
?
:%3F -
@
:%40 -
[
:%5B -
]
:%5D
举例来说,汉字中
的 UTF-8 十六进制编码是e4b8ad
,每两个字符一组,URL 转义后就为%e4%b8%ad
。也就是说,URL 里面凡是有汉字中
的地方,都要写成%e4%b8%ad
。(JavaScript协议不能被urlcode编码)
3.html实体编码
1.HTML 实体是一段以连字号 (&)开头、以分号 (;)结尾的文本 (字符串)。
2.实体常常用于显示保留字符 (这些字符会被解析为 HTML 代码)和不可见的字符 (如“不换行空格”)
3.应用场景:在前端,一般为了避免 XSS 攻击,会将 <> 编码为 < 与 >,这些就是 HTML 实体编码
4.使用须知:在 HTML 转义时,仅仅只需要对六个字符进行编码:&、<、>、"、’ 和 `。 我们可以使用 he 库进行编码及转义
下面的UTF-8是一种可变长的Unicode编码,解决了中文与英文字节不同导致的资源浪费的情况
<meta charset="UTF-8">
(1)不是每个 Unicode 字符都可以打印出来,有些没有可打印形式,比如换行符的码点是十进制的10
(十六进制的A
),就没有对应的字面形式。
(2)小于号(<
)和大于号(>
)用来定义 HTML 标签,其他需要用到这两个符号的场合,必须防止它们被解释成标签。
(3)由于 Unicode 字符太多,无法找到一种输入法,可以直接输入所有这些字符。换言之,没有一种键盘,有办法输入所有符号。
(4)网页不允许混合使用多种编码,如果使用 UTF-8 编码的同时,又想插入其他编码的字符,就会很困难。
HTML 为了解决上面这些问题,允许使用 Unicode 码点表示字符,浏览器会自动将码点转成对应的字符。
字符的码点表示法是&#N;
(十进制,N
代表码点)或者&#xN;
(十六进制,N
代表码点),比如,字符a
可以写成a
(十进制)或者a
(十六进制),字符中
可以写成中
(十进制)或者中
(十六进制)
以下是一些字符的的实体表示方法
<
:<
>
:>
"
:"
'
:'
&
:&
©
:©
#
:#
§
:§
¥
:¥
$
:$
£
:£
¢
:¢
%
:%
*
:$ast;
@
:@
^
:^
±
:±
- 空格:
4.form表单
<form>
标签用来定义一个表单,所有表单内容放到这个容器元素之中。常用来提交账号信息
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="javascript:alert(1)" method="post">
<label for="">用户名:</label><input type="text" name="username" id="">
<label for="">密码:</label><input type="password" name="password" id="">
<input type="submit" value="submit">
</form>
</body>
</html>
上面代码就是一个表单。
<input>
标签是一个行内元素,用来接收用户的输入。它是一个单独使用的标签,没有结束标志。它有多种类型,取决于type
属性的值,默认值是text
,表示一个输入框。
type="text"
是普通的文本输入框,用来输入单行文本。如果用户输入换行符,换行符会自动从输入中删除。
type="submit"
是表单的提交按钮。用户点击这个按钮,就会把表单提交给服务器。
<form>
有以下属性。
accept-charset
:服务器接受的字符编码列表,使用空格分隔,默认与网页编码相同。action
:服务器接收数据的 URL。autocomplete
:如果用户没有填写某个控件,浏览器是否可以自动填写该值。它的可能取值分别为off
(不自动填写)和on
(自动填写)。method
:提交数据的 HTTP 方法,可能的值有post
(表单数据作为 HTTP 数据体发送),get
(表单数据作为 URL 的查询字符串发送),dialog
(表单位于<dialog>
内部使用)。enctype
:当method
属性等于post
时,该属性指定提交给服务器的 MIME 类型。可能的值为application/x-www-form-urlencoded
(默认值),multipart/form-data
(文件上传的情况),text/plain
。name
:表单的名称,应该在网页中是唯一的。注意,如果一个控件没有设置name
属性,那么这个控件的值就不会作为键值对,向服务器发送。novalidate
:布尔属性,表单提交时是否取消验证。target
:在哪个窗口展示服务器返回的数据,可能的值有_self
(当前窗口),_blank
(新建窗口),_parent
(父窗口),_top
(顶层窗口),<iframe>
标签的name
属性(即表单返回结果展示在<iframe>
窗口)。