网安总结日志(1)
作者:互联网
网安笔记
正则表达式
https://regex101.com/(正则测试用的地址)
概念
正则表达式是一种形式语言(规律而不是语义)
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串
通常用于:
校验:检查一个字符串是否包含指定模式的子字符串
替换:将匹配的子字符串替换为给定的新字段
匹配:提取符合匹配模式的字符串
组成
正则表达式=多个pattern组成(模式单元)
pattern=代词(谁)+量词(多少)+定位介词(在哪里)
代词
指代一个特定字符(也就是找谁) (限定一个字符的范围)
常用代词如下:(在正则表达式当^表达就是非的意思)
代词 | 作用 |
---|---|
\d | 0-9的数字 |
\D | 0-9的非数字 |
\w | 匹配[_0-9a-zA-Z]中包括下划线的单词字符(和[Z-Az-a9-0]是等价的) |
\W | 匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]‘。 |
\s | 空格 |
\S | 非空格 |
\n | 匹配一个换行符 |
\f | 匹配一个换页符 |
\r | 匹配一个回车符 |
x|y | 匹配x或者y 例如:‘z|food’ 能匹配 “z” 或 “food”。’(z|f)ood’ 则匹配 “zood” 或 “food”。 |
. | 任意字符(除了\n以外) |
[xyz] | 字符集,用来匹配其中的任意一个单词。例如:[abc]可以匹配”apple“中的a |
[^xyz] | 负值字符集,用来匹配其中未包含的字符。例如:[abc]可以匹配"apple"中的p |
[x-y] | 字符范围。例如:[a-z]可以匹配a-z的所有小写字母 |
[^x-y] | 负值字符范围。跟上面反着来。 |
量词
通俗解释就是衡量有多少个代词
量词 | 意义 |
---|---|
* | 匹配前面的子表达式>=0次 例如:zo* 能匹配 “z” 以及 “zoo”。 * 等价于{0,}。 |
+ | 匹配前面的子表达式>=1次 例如,‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。 |
? | 匹配前面的子表达式1次或者0次 例如:“do(es)?” 可以匹配 “do” 或 “does” 中的"do" 。? 等价于 {0,1}。 |
{n} | 匹配n次 (n为非负数) 例如:‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。 |
{n,} | 匹配至少n次 例如,‘o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。‘o{1,}’ 等价于 ‘o+’。‘o{0,}’ 则等价于 ‘o*’。 |
{n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如 “o{1,3}” 将匹配 “fooooood” 中的前三个 o。‘o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。 |
“{m,n}”、“{m,}”、“?”、“*”和“+”之类的都算做是贪婪模式的量词
而在他们后面跟上一个"?" 就算做非贪婪模式的量词
贪婪模式和非贪婪模式的区别
定位词
通俗来讲就是这玩意儿在哪
定位词 | 意义 |
---|---|
^ | 匹配行首(字符串开始的位置) |
$ | 匹配行尾(字符串结束的位置) |
\b | 匹配单词边界 例如:er\b 就可以匹配beer后面的er 但是不能匹配very中的er |
\B | 匹配非单词边界 用法和上面相反 |
选择器
用来捕获匹配字符串(或者组合多种模式进行匹配)
(pattern):匹配pattern 并捕获这个字符串
(?:pattern):匹配pattern 但是不捕获这个结果
(?=pattern):正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。
例如, ‘Windows (?=95|98|NT|2000)’ 能匹配 “Windows 2000” 中的 “Windows” ,但不能匹配 “Windows 3.1” 中的 “Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern):负向预查,在任何不匹配的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如’Windows (?!95|98|NT|2000)’ 能匹配 “Windows 3.1” 中的 “Windows”,但不能匹配 “Windows 2000” 中的 “Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gToDwYRm-1638531982769)(C:\Users\84305\AppData\Roaming\Typora\typora-user-images\image-20211127195354989.png)]
反向引用
: 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如,‘n’ 匹配字符 “n”。’\n’ 匹配一个换行符。序列 ‘\’ 匹配 “” 而 “(” 则匹配 “(”。
二义性符号^:在代词里是非 在定位词里是行首
二义性符号?:在代词后面表示量词 在量词后面表示非贪婪 在选择器中表示非捕获
简单的写法以及示例
/abcde?fg/
对于这个正则表达式 我们会发现 出了"e"以外 所有的代词都没有量词 也就是说除了e要匹配一次或者两次外 其他单词都要进行精准匹配
匹配结果:abcdefg 或abcdfg
abcdefg[1-9]{3}
这里匹配的就是在abcdefg后面跟上三个数字
例如:abcdefg123
/\bHel/
匹配Hello 但是不匹配oHell等等
/llo\b/
匹配Hello 但是不匹配 Helloy等等
UTF-8的编码规则
使用1-4个字节来存储一个字符,最大的特点是可变长度。
编码规则:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
——————–+———————————————
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx (可填11位unicode码)
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx (可填16位unicode码)
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx (可填21位unicode码)
以“二”(100111010001100)为例,二的unicode编码为4e8c,二进制对应为0100 111010 001100
依上表可知“二”在UTF-8编码中为三个字节
使用格式1110xxxx 10xxxxxx 10xxxxxx,从最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了
11100100 10111010 10001100(红色加粗为补0)
即十六进制为“E4BA8C”,这个编码即为“二”的UTF-8编码
再例如:将”中“字转换为utf8编码
中的unicode编码为4e2d 二进制对应为0100111000101101
中为三字节,格式为1110xxxx 10xxxxxx 10xxxxxx
则utf-8编码为:11100100 10111000 10101101
为E4B8AD
HTML前端基础
HTML超文本标记语言
超文本:包括图片 链接等等不仅限于文字的网页
标记:
CSS 层级链式表 (做网页样式的)
url的组成部分
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gaBGcc46-1638531982774)(C:\Users\84305\AppData\Roaming\Typora\typora-user-images\image-20211127115820476.png)]
网页的基本概念
标签
网页的 HTML 代码由许许多多不同的标签(tag)构成。学习 HTML 语言,就是学习各种标签的用法。
下面就是标签的一个例子。
<title>网页标题</title>
上面代码中,<title>
和</title>
就是一对标签。
标签用来告诉浏览器,如何处理这段代码。标签的内容就是浏览器所要渲染的、展示在网页上的内容。
标签放在一对尖括号里面(比如<title>
),大多数标签都是成对出现的,分成开始标签和结束标签,结束标签在标签名之前加斜杠(比如</title>
)。但是,也有一些标签不是成对使用,而是只有开始标签,没有结束标签,比如上一节示例的<meta>
标签。
<meta charset="utf-8">
上面代码中,<meta>
标签就没有结束标签</meta>
。
这种单独使用的标签,通常是因为标签本身就足够完成功能了,不需要标签之间的内容。实际应用中,它们主要用来提示浏览器,做一些特别处理。
标签可以嵌套。
<div><p>hello world</p></div>
上面代码中,<div>
标签内部包含了一个<p>
标签。
嵌套时,必须保证正确的闭合顺序,不能跨层嵌套,否则会出现意想不到的渲染结果。
<div><p>hello world</div></p>
上面代码就是错误的嵌套,闭合顺序不正确。
HTML 标签名是大小写不敏感,比如<title>
和<TITLE>
是同一个标签。不过,一般习惯都是使用小写。
另外,HTML 语言忽略缩进和换行。下面几种写法的渲染结果是一样的。
<title>网页标题</title>
<title>
网页标题
</title>
<title>网页
标题</title>
进一步说,整个网页的 HTML 代码完全可以写成一行,浏览器照样解析,结果完全一样。所以,正式发布网页之前,开发者有时会把源码压缩成一行,以减少传输的字节数。
各种网页的样式效果,比如内容的缩进和换行,主要靠 CSS 来实现。
元素
浏览器渲染网页时,会把 HTML 源码解析成一个标签树,每个标签都是树的一个节点(node)。这种节点就称为网页元素(element)。所以,“标签”和“元素”基本上是同义词,只是使用的场合不一样:标签是从源码角度来看,元素是从编程角度来看,比如<p>
标签对应网页的p
元素。
嵌套的标签就构成了网页元素的层级关系。
<div><p>hello world</p></div>
上面代码中,div
元素内部包含了一个p
元素。上层元素又称为“父元素”,下层元素又称为“子元素”,即div
是p
的父元素,p
是div
的子元素。
块级元素,行内元素
所有元素可以分成两大类:块级元素(block)和行内元素(inline)。
块级元素默认占据一个独立的区域,在网页上会自动另起一行,占据 100% 的宽度。
<p>hello</p>
<p>world</p>
上面代码中,p
元素是块级元素,因此浏览器会将内容分成两行显示。
行内元素默认与其他元素在同一行,不产生换行。比如,span
就是行内元素,通常用来为某些文字指定特别的样式。
<span>hello</span>
<span>world</span>
上面代码中,span
元素是行内元素,因此浏览器会将两行内容放在一行显示。
属性
属性(attribute)是标签的额外信息,使用空格与标签名和其他属性分隔。
<img src="demo.jpg" width="500">
上面代码中,<img>
标签有两个属性:src
和width
。
属性可以用等号指定属性值,比如上例的demo.jpg
就是src
的属性值。属性值一般放在双引号里面,这不是必需的,但推荐总是使用双引号。
注意,属性名是大小写不敏感的,onclick
和onClick
是同一个属性。
HTML 提供大量属性,用来定制标签的行为,详细介绍请看《元素的属性》一章。
标签类型
编码:ascii->unicode(包含汉字等所有文字的编码 不可变长 导致资源浪费)
->utf8编码(一般汉字占3字节)
unicode的编码规则
标签可以嵌套:比如说div里面套其他的
前端基础:
名词解释:lang=‘en’ 就是语言类型为英语
charset=‘utf-8’ 也就是编码类型为utf-8
前端需要多端适应–响应式 也就是在手机 电脑上都要自适应–bootstrap框架
content就是响应式
title 网页名称
在body中(网页主内容) 我们可以插入如下内容;
H1-H6标签
H1-H6就是由大到小
crtl+?可以快速注释掉一段代码
P标签
块标签 在前端中 分为两种元素:行级元素和块级元素
块级元素的属性为独占一行
那么如图所示的代码 就会得到两行显示的效果
Span标签
也就是行标签 行标签是不独占一行的
a标签
超链接标签 跳转网页的
其中:
href :后面跟的是要去的链接地址 注意 不能忘记写域名中的协议
target :为这个超链接的打开方式 其中_blank为新窗口打开 _self是原窗口打开 起的是su的作用(即网络优化)
Img标签
图片标签 用来放图片的的
src:图片的目录地址 这里既可以是相对路径也可以是绝对路径 相对路径的语法与linux系统相同 .代表同级目录 …代表上级目录
alt:后面的内容是提示 用于标记这张图片 (实际上就是图片名称)
当然 这里图片的长宽也是可以设置的
width是宽 height是长
hr标签
分割标签
一般不用 通常会用自己做的图片来做分割
br标签
换行标签
(实际上是一种空标签)
font标签
用于规定文本的大小 字体 颜色等等
strong标签
强调标签 =加粗
scripit
关闭浏览器防护
三元运算符的规则 如果第一个为真 那么就要第一个;为假就要第二个
同源策略
什么是同源? cors csp(跨域浏览器防御策略)
CSP看阮一峰的 csp就是为了防御xss产生的
链接: http://www.ruanyifeng.com/blog/2016/09/csp.html.
协议 主机 端口要一致
标签:总结,字符,匹配,编码,标签,元素,网安,网页,日志 来源: https://blog.csdn.net/qq_41819426/article/details/121705830