目錄
什么是 HTML
HTML 是用來描述網(wǎng)頁的一種語言。
HTML 指的是超文本標(biāo)記語言 (Hyper Text Markup Language)
HTML 不是一種編程語言相叁,而是一種標(biāo)記語言 (Markup language)
標(biāo)記語言是一套標(biāo)記標(biāo)簽 (Markup tag)
HTML 使用標(biāo)記標(biāo)簽來描述網(wǎng)頁
總的來說遵绰,HTML 本身不具有編程邏輯,它是一種將格式與內(nèi)容分離編排的語言钝荡。
用戶在瀏覽器端解析的網(wǎng)頁大都是由 HTML 語言組成街立。
由于是通過瀏覽器動態(tài)解析,因此可以使用普通文本編輯器來編寫 HTML埠通。
HTML 中的標(biāo)簽與元素
標(biāo)簽和元素共同構(gòu)成了 HTML 多樣的格式和豐富的功能赎离。
HTML 元素以開始標(biāo)簽起始,以結(jié)束標(biāo)簽終止端辱。元素處于開始標(biāo)簽與結(jié)束標(biāo)簽之間梁剔,標(biāo)簽之間可以嵌套虽画,一個典型的 HTML 文檔如下:
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n29" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><html>
<body>
Hello World
</body>
</html></pre>
信息隱藏
HTML 中的部分標(biāo)簽用于元信息展示、注釋等功能荣病,并不用于內(nèi)容的顯示码撰。另一方面,一些屬性具有修改瀏覽器顯示樣式的功能个盆,在 CTF 中常被用來進(jìn)行信息隱藏脖岛。
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n32" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">標(biāo)簽
,定義注釋
<!DOCTYPE>颊亮,定義文檔類型
<head>柴梆,定義關(guān)于文檔的信息
<meta>,定義關(guān)于HTML文檔的元信息
<iframe>终惑,定義內(nèi)聯(lián)框架
?
屬性
hidden绍在,隱藏元素</pre>
XSS
關(guān)于 XSS 漏洞的詳細(xì)介紹見 1.4.5 節(jié)的 OWASP Top Ten Project 漏洞基礎(chǔ)。導(dǎo)致 XSS 漏洞的原因是嵌入在 HTML 中的其它動態(tài)語言雹有,但是 HTML 為惡意注入提供了輸入口偿渡。
常見與 XSS 相關(guān)的標(biāo)簽或?qū)傩匀缦拢?/p>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n36" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><script>,定義客戶端腳本
<img src=>霸奕,規(guī)定顯示圖像的 URL
<body background=>溜宽,規(guī)定文檔背景圖像URL
<body onload=>,body標(biāo)簽的事件屬性
<input onfocus= autofocus>铅祸,form表單的事件屬性
<button onclick=>坑质,擊鍵的事件屬性
<link href=>,定義外部資源鏈接
<object data=>临梗,定義引用對象數(shù)據(jù)的 URL
<svg onload=>涡扼,定義SVG資源引用</pre>
HTML 編碼
HTML 編碼是一種用于表示問題字符已將其安全并入 HTML 文檔的方案。HTML 定義了大量 HTML 實(shí)體來表示特殊的字符盟庞。
HTML 編碼 | 特殊字符 |
---|---|
" | " |
&apos | ' |
& | & |
< | < |
> | > |
此外吃沪,任何字符都可以使用它的十進(jìn)制或十六進(jìn)制的ASCII碼進(jìn)行HTML編碼,例如:
HTML 編碼 | 特殊字符 |
---|---|
" | " |
' | ' |
" | " |
' | ' |
HTML5 新特性
其實(shí) HTML5 已經(jīng)不新了什猖,之所以還會在這里提到 HTML5票彪,是因?yàn)楦鼜?qiáng)大的功能會帶來更多意想不到的問題。
HTML5 的一些新特性:
新的語義元素標(biāo)簽
新的表單控件
強(qiáng)大的圖像支持
強(qiáng)大的多媒體支持
強(qiáng)大的 API
參考資料
來源:GitHub