HTML表单用于收集,HTML表单
HTML 表單用于收集用戶輸入。
HTML表單是用戶和web站點(diǎn)或應(yīng)用程序之間交互的主要內(nèi)容之一。它們?cè)试S用戶將數(shù)據(jù)發(fā)送到web站點(diǎn)。大多數(shù)情況下,數(shù)據(jù)被發(fā)送到web服務(wù)器,但是web頁面也可以自己攔截它并使用它。
HTML表單是由一個(gè)或多個(gè)小部件組成的。這些小部件可以是文本字段(單行或多行)、選擇框、按鈕、復(fù)選框或單選按鈕。
表單元素
元素該元素正式定義了一個(gè)表單,它是一個(gè)容器元素,同時(shí)它在客戶端定義如何發(fā)送數(shù)據(jù),通過支持一些特定的屬性來配置表單的行為方式。它的所有屬性都是可選的,但至少要設(shè)置action屬性和method屬性。
...
action?屬性定義了發(fā)送數(shù)據(jù)要去的位置,它的值必須是一個(gè)有效的URL(絕對(duì)URL和相對(duì)URL均可)。如果沒有提供此屬性,則數(shù)據(jù)將被發(fā)送到包含表單的頁面的URL。
method?屬性定義了發(fā)送數(shù)據(jù)的HTTP方法(如何發(fā)送數(shù)據(jù)),其中最常見的是GET方法和POST方法。
input標(biāo)簽不同類型
用button做按鈕和用input來做按鈕有什么區(qū)別?
發(fā)送表單數(shù)據(jù)
參考MDN web docs:發(fā)送表單數(shù)據(jù)
客戶端/服務(wù)器體系結(jié)構(gòu)
web基于非常基本的客戶端/服務(wù)器體系結(jié)構(gòu),可以總結(jié)如下:客戶端(通常是web瀏覽器)向服務(wù)器發(fā)送請(qǐng)求(大多數(shù)情況下是Apache、Nginx、IIS、Tomcat等web服務(wù)器),使用HTTP 協(xié)議。服務(wù)器使用相同的協(xié)議來回答請(qǐng)求。
在客戶端,HTML表單是一種方便的用戶友好的方式,可以配置HTTP請(qǐng)求將數(shù)據(jù)發(fā)送到服務(wù)器。
表單提交方式中POST和GET的區(qū)別:
GET方法是瀏覽器使用的方法,請(qǐng)求服務(wù)器返回給定的資源,在這種情況下,瀏覽器發(fā)送一個(gè)空的主體。因?yàn)橹黧w是空的,如果使用該方法發(fā)送一個(gè)表單,那么發(fā)送到服務(wù)器的數(shù)據(jù)將被追加到URL。
用戶名
年齡
提交
? ? ? ? ? ? ? ? -->由于GET方法已經(jīng)被使用,提交表單后--> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
GET會(huì)修改網(wǎng)址,數(shù)據(jù)被附加到URL作為一系列的名稱/值對(duì),在URL web地址結(jié)束之后,我們包括一個(gè)問號(hào)(?),后面是名稱/值對(duì),每一個(gè)都由一個(gè)與符號(hào)(&)分隔開。
HTTP請(qǐng)求如下:
GET /?user=Lily&age=25 HTTP/1.1Host: baidu.com
如果使用POST方法發(fā)送表單,則將數(shù)據(jù)追加到HTTP請(qǐng)求的主體中。
POST會(huì)把提交內(nèi)容放入http的Headers中(F12 Network可查看All--Name標(biāo)簽頁下)
What greeting do you want to say?
Who do you want to say it to?
Send my greetings
主體中包含的數(shù)據(jù)是這樣的:
POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
say=Hi&to=Mom
Content-Length數(shù)據(jù)頭表示主體的大小,Content-Type數(shù)據(jù)頭表示發(fā)送到服務(wù)器的資源類型。
使用GET請(qǐng)求用戶將在他們的URL欄中看到數(shù)據(jù),而使用POST請(qǐng)求用戶將不會(huì)看到。這一點(diǎn)很重要,有兩個(gè)原因:
如果您需要發(fā)送一個(gè)密碼(或其他敏感數(shù)據(jù)),永遠(yuǎn)不要使用GET方法否則數(shù)據(jù)會(huì)在URL欄中顯示,這將非常不安全。
如果您需要發(fā)送大量的數(shù)據(jù),那么POST方法是首選的,因?yàn)橐恍g覽器限制了URL的大小。此外,許多服務(wù)器限制它們接受的URL的長(zhǎng)度。
常見的安全問題
每次向服務(wù)器發(fā)送數(shù)據(jù)時(shí),都需要考慮安全性。到目前為止,HTML表單是最常見的攻擊媒介(可能發(fā)生攻擊的地方)。這些問題從來都不是來自HTML表單本身,它們來自于服務(wù)器如何處理數(shù)據(jù)。
XSS和CRSF
跨站腳本(XSS)和跨站點(diǎn)請(qǐng)求偽造(CSRF)是常見的攻擊類型,它們發(fā)生在當(dāng)您將用戶發(fā)送的數(shù)據(jù)顯示給用戶或另一個(gè)用戶時(shí)。
XSS允許攻擊者將客戶端腳本注入到其他用戶查看的Web頁面中。攻擊者可以使用跨站點(diǎn)腳本攻擊的漏洞來繞過諸如同源策略之類的訪問控制。這些攻擊的影響可能從一個(gè)小麻煩到一個(gè)重大的安全風(fēng)險(xiǎn)。
CSRF攻擊類似于XSS攻擊,因?yàn)樗鼈円韵嗤姆绞焦簟騑eb頁面中注入客戶端腳本——但它們的目標(biāo)是不同的。CSRF攻擊者試圖將特權(quán)升級(jí)到特權(quán)用戶(比如站點(diǎn)管理員)的權(quán)限,以執(zhí)行他們不應(yīng)該執(zhí)行的操作(例如,將數(shù)據(jù)發(fā)送給一個(gè)不受信任的用戶)。
XSS攻擊利用用戶對(duì)web站點(diǎn)的信任,而CSRF攻擊則利用網(wǎng)站為其用戶提供的信任。
為了防止這些攻擊,您應(yīng)該始終檢查用戶發(fā)送給服務(wù)器的數(shù)據(jù)(如果需要顯示),盡量不要顯示用戶提供的HTML內(nèi)容。相反,您應(yīng)該處理用戶提供的數(shù)據(jù),這樣您就不會(huì)逐字地顯示它。當(dāng)今市場(chǎng)上幾乎所有的框架都實(shí)現(xiàn)了一個(gè)最小的過濾器,它可以從任何用戶發(fā)送的數(shù)據(jù)中刪除HTML
SQL注入
SQL 注入是一種試圖在目標(biāo)web站點(diǎn)使用的數(shù)據(jù)庫上執(zhí)行操作的攻擊類型。這通常包括發(fā)送一個(gè)SQL請(qǐng)求,希望服務(wù)器能夠執(zhí)行它(通常,當(dāng)應(yīng)用服務(wù)器試圖存儲(chǔ)由用戶發(fā)送的數(shù)據(jù)時(shí))。這實(shí)際上是攻擊網(wǎng)站的主要途徑之一。
其后果可能是可怕的,從數(shù)據(jù)丟失到通過使用特權(quán)升級(jí)控制整個(gè)網(wǎng)站基礎(chǔ)設(shè)施的攻擊。這是一個(gè)非常嚴(yán)重的威脅,您永遠(yuǎn)不應(yīng)該存儲(chǔ)用戶發(fā)送的數(shù)據(jù),而不執(zhí)行一些清理工作(例如,在php/mysql基礎(chǔ)設(shè)施上使用mysql_real_escape_string()。
HTTP數(shù)據(jù)頭注入和電子郵件注入
當(dāng)您的應(yīng)用程序基于表單上用戶的數(shù)據(jù)輸入構(gòu)建HTTP頭部或電子郵件時(shí),就會(huì)出現(xiàn)這種類型的攻擊。這些不會(huì)直接損害您的服務(wù)器或影響您的用戶,但是它們是一個(gè)更深入的問題,例如會(huì)話劫持或網(wǎng)絡(luò)釣魚攻擊。
這些攻擊大多是無聲的,并且可以將您的服務(wù)器變成僵尸
設(shè)計(jì)表單
在開始編寫代碼之前,花時(shí)間考慮一下您的表單。設(shè)計(jì)一個(gè)快速的模型可以幫助我們定義想要詢問用戶的正確的數(shù)據(jù)集。從用戶體驗(yàn)(UX)的角度來看,要記住:表單越大,失去用戶的風(fēng)險(xiǎn)就越大。保持簡(jiǎn)單,保持專注:只要求必要的數(shù)據(jù)。在構(gòu)建站點(diǎn)或應(yīng)用程序時(shí),設(shè)計(jì)表單是非常重要的一步。
原文地址:https://www.cnblogs.com/Amy-world/p/9918028.html
總結(jié)
以上是生活随笔為你收集整理的HTML表单用于收集,HTML表单的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从html导出带样式的excel,关于将
- 下一篇: 2018高中计算机会考知识点,2018高