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