渗透测试 | Web安全基础:HTML&CSS&JavaScript

0x01 HTML元素

<p class="editor-note"> this  is  a html element </p>

其中 <p>开始标签</p>结束标签this is a html element内容,以上三者所有相结合即为一个元素class="editor-note"为标签的属性,“”内包含的为属性的值

一个元素放在其他元素中。就称作嵌套:

    <p> My cat is <strong> angry </strong>.</p>
<p> My cat is <strong> angry </strong>.</p>

不包含任何内容的元素称为空元素,下面给出的代码中有两个属性,但是并没有</img>结束标签,元素里也没有内容,这是因为,图像元素不需要通过内容来产生效果,它的作用是在所在位置嵌入一个图像。

    <img src ="images/firefox-icon.png" alt="测试图片">

下面来看一个完整又简单的 HTML文档:

<!-- <p>我在注释里!</p> -->
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>测试页面</title>
    </head>
    <body>
        <img src="/2021-07-19 145450.png" alt="测试图片">
    </body>
</html>
  • <!DOCTYPE html>声明文档类型。
  • <html></html>根元素,包含整个页面的内容。
  • <head></head>头元素,用于进行一些面向搜索引擎的关键词、页面描述、CSS样式表和字符编码声明等。
  • <meta charset="utf-8">指定使用UTF-8编码
  • <title></title>页面标题
  • <body></body>页面呈现内容
  • <img>包含两个属性:地址属性替换文字描述,后者用于当图像不能显示时描述该图像

标记文本

  • 标题<h1>主标题</h1> <h2>顶层标题</h2> <h3>子标题</h3> <h4>次子标题</h4>
  • 段落<p1> 段落1</p1>
  • 列表<ul>无序列表</ul> <ol>有序列表</ol>

示例:

<ul> 
    <li>firstly</li>
    <li>secondly</li>

</ul>

<ul>
<li>firstly</li>
<li>secondly</li>

</ul>

引用

行内引用:<q></q>
<p>The quote element — <code><q></code> — is <q cite="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q">intended
for short quotations that don't require paragraph breaks.</q></p>

<p>The quote element — <code>&lt;q&gt;</code> — is <q cite="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q">intended
for short quotations that don't require paragraph breaks.</q></p>

块引用:<blockquote></blockquote>

<blockquote cite="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote">
<p>The <strong>HTML <code><blockquote></code> Element</strong> (or <em>HTML Block
Quotation Element</em>) indicates that the enclosed text is an extended quotation.</p>
</blockquote>

<blockquote cite="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote">
  <p>The <strong>HTML <code>&lt;blockquote&gt;</code> Element</strong> (or <em>HTML Block
  Quotation Element</em>) indicates that the enclosed text is an extended quotation.</p>
</blockquote>

缩略语<abbr>

<p> <abbr title="Royal Never Give Up">RNG </abbr> will win the game!</p>

<p> <abbr title="Royal Never Give Up">RNG </abbr> will win the game!</p>

代码
描述代码段 <code>、保留所有空字符 <pre>

标记日期<time>

<time datetime="2016-01-20">2016年1月20日</time>

字体

  • <em></em>斜体
  • <srong></strong>粗体

链接

<a href="www.baidu.com"> 百度</a>

<a href="www.baidu.com"> 百度</a>

  • <a>锚元素:通过它的href属性创建通向其他网页、文件、同一页面内的位置、电子邮件或任何其他 URL的超链接。
  • href代表超文本引用(hypertext reference)

元素类型

  • 块级元素:以一整块的形式在网页中展现,前后的内容都需要另起一行,用于展现结构化的内容如<p>
  • 内联元素:通常出现在块级元素中,并包围一小段文档内容如<em>
  • 空元素:没有结束标签的元素,通常用于在该位置中嵌入一些内容如<img>

布尔属性

没有值的属性或属性值只能和属性名相同的属性,如disabled

    <input type="text" disabled>
    <input type="text">

<input type="text" disabled>
<input type="text">

实体引用:特殊字符编码

  • <--> &lt;
  • >--> &gt;
  • "--> &quot;
  • '--> apos;
  • &--> &amp;

<head>头部元素

  • <title>html文档标题,而<h1>为body的标题
  • <meta>元素:元数据,描述数据的数据,包含文档的各种属性,如编码类型;同时包含namecontent属性
    • name指定meta元素类型

    • content指定内容

    • 如:

        <meta name="author" content="Chris Mills">
        <meta name="description" content="The MDN Learning Area aims to provide
        complete beginners to the Web with all they need to know to get
        started with developing web sites and applications.">
      

在HTML中应用CSS和JavaScript

<link rel="stylesheet" href="my-css-file.css">

CSS使用link元素,位于文档头部:

  • stylesheet表明这是文档的样式表
  • href包含样式表文件的路径

<script>一般放在文档尾部</body>标签之前,以确保在加载脚本之前浏览器已经解析了HTML内容:

<script src="my-js-file.js"></script>

统一资源定位符URL与路径Path

URL使用路径查找文件

  • 当前目录
  • 子目录: 子路径名/当前路径
  • 上级目录: ../
    相对链接与绝对链接
  • 绝对URL即绝对定义的位置,包含协议、域名、文件目录等
  • 相对URL即表示某一相对位置,其路径随着在不同文件夹的位置而相对变化
  • 尽量使用相对URL,便于服务器查找请求文件,而无需额外进行域名解析

网站架构

  • <header>页眉
  • <nav>导航栏
  • <main>主内容,可包含<article><section><div>
  • <aside>侧边栏
  • <footer>页脚

无语义元素

内联无语义元素 <span>、块级无语义元素<div>
换行 <br> 水平分割线 <hr>

Iframe嵌入

标签<iframe>用于将一个网页嵌入至另一个网页中,使用时包含一下属性:

  • allowfullscreen 全屏显示该嵌入网页
  • frameborder 为嵌入的网页绘制边框
  • src嵌入网页的URL路径
  • widthheight宽与高
  • sandbox沙盒将嵌入内容与外部环境隔离

CSS

将CSS与Html文档联结,即可使用选择器控制文本样式

p{
    color:green;
}
<p>Put on my eyes.</p>

类名

special作为一个类

.special{
    color:orange;
    font-weight:bold;
}

<ul>
  <li>项目一</li>
  <li class="special">项目二</li>
  <li>项目 <em>三</em></li>
</ul>

还可单独选择某一元素中的类

li.special{

    color:red
}

<ul>
    <li class="special">item1</li>
    <li> item2</li>
</ul>

可选择某一元素内的部分

li em {
  color: rebeccapurple;
}

还可进行定位,如标题<h1>后面紧跟的<p>

h1 + p{
    color:yellow;
}

<h1> 春江花月夜 </h1>
<p>春江潮水连海平</p> //This line will be yellow.
<p>海上明月共潮生</p> //Not this line.

根据状态确定样式

a:link {
  color: pink;
}   //正常链接为粉色

a:visited {
  color: green;
}  //点击过的链接为绿色

a:hover {
  text-decoration: none;
} //悬停的链接移除下划线

选择器的优先级

  • 两个选择器,后一个会覆盖前一个
  • 类的优先级比选择器高

函数

.box {
  padding: 10px;
  width: calc(90% - 30px); //计算(块宽度的90% - 30px) 
  background-color: rebeccapurple;
  color: white;
}

规则

当浏览器宽度大于30em时,背景为蓝色,小于为粉色
body {
background-color: pink;
}

@media (min-width: 30em) {
  body {
    background-color: blue;
  }
}

速记属性

padding: 10px 15px 15px 5px;
//相当于
padding-top: 10px;
padding-right: 15px;
padding-bottom: 15px;
padding-left: 5px;

background: red url(bg-graphic.png) 10px 10px repeat-x fixed;
//相当于
background-color: red;
background-image: url(bg-graphic.png);
background-position: 10px 10px;
background-repeat: repeat-x;
background-attachment: fixed;

CSS如何工作

  1. 浏览器先载入html文件

     <p>
       Let's use:
       <span>Cascading</span>
       <span>Style</span>
       <span>Sheets</span>
     </p>
    
  2. 将html文件转化为一个DOM(标记各个元素的树形结构)

     P
     ├─ "Let's use:" 
     ├─ SPAN
     |  └─ "Cascading"
     ├─ SPAN
     |  └─ "Style"
     └─ SPAN
        └─ "Sheets"
    
  3. 浏览器将 HTML相关的资源拉取,包括图片、音视频、CSS样式等(不包括JavaScript)

  4. 浏览器对拉取的CSS进行解析,根据不同的选择器将不同的规则应用至对应的DOM节点,这个步骤被称为渲染树

  5. 渲染后进行布局,页面显示

注:当由于版本或 CSS样式书写错误等问题,浏览器无法解析某些 CSS样式,则会跳过这些无法解析的规则,因此不会对网页显示造成影响。

JavaScript

JavaScript是在 HTML与 CSS将网页样式构建完成后才被执行,通常依靠DOM API动态修改 HTML与 CSS来更新用户界面。
使用<script>标签将 JS代码添加在 HTML文档中,<script src="script.js" async></script>,其中async表示异步执行外部脚本,是一个最小化属性,不同脚本之间的调用是相互独立的。选择defer属性时,多个关联脚本会按顺序调用而不会发生错误。

事件

浏览器进行的动作就是一个事件,侦听事件发生的结构被称为事件监听器(Event Listener),响应事件触发而运行的代码称为事件处理器(Event Handler)

guessSubmit.addEventListener('click', checkGuess);

此代码中,事件监听器为addEventListener,包含两个参数,动作click与执行函数checkGuess。注意:此处函数作为监听器的参数时,不加“()”

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,488评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,034评论 3 414
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,327评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,554评论 1 307
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,337评论 6 404
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,883评论 1 321
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,975评论 3 439
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,114评论 0 286
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,625评论 1 332
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,555评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,737评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,244评论 5 355
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,973评论 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,362评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,615评论 1 280
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,343评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,699评论 2 370

推荐阅读更多精彩内容