常見 Web 的攻擊技術(shù)
互聯(lián)網(wǎng)上的攻擊大都將 Web 站點作為目標(biāo)。常見的攻擊手段有哪些挖诸,以及攻擊會造成怎樣的影響法精。
簡單的 HTTP 協(xié)議本身并不存在安全性問題搂蜓,因此協(xié)議本身幾乎不會成為攻擊的對象。應(yīng)用 HTTP 協(xié)議的服務(wù)器和客戶端相味,以及運行在服務(wù)器上的 Web 應(yīng)用等資源才是攻擊目標(biāo)殉挽。
針對 Web 應(yīng)用的攻擊模式有2種:
主動攻擊:主動攻擊(active attack)是指攻擊者通過直接訪問 Web 應(yīng)用此再,把攻擊代碼傳入的攻擊模式输拇。由于該模式是直接針對服務(wù)器上的資源進(jìn)行攻擊,因此攻擊者需要能夠訪問到那些資源逛裤。主動攻擊模式里具有代表性的攻擊是 SQL 注入攻擊和 OS 命令注入攻擊带族。
被動攻擊:被動攻擊(passive attack)是指利用圈套策略執(zhí)行攻擊代碼的攻擊模式。在被動攻擊過程中阳堕,攻擊者不直接對目標(biāo) Web 應(yīng)用訪問發(fā)起攻擊恬总。被動攻擊模式中具有代表性的攻擊是跨站腳本攻擊(xss)和跨站點請求偽造(csrf)肚邢。
被動攻擊通常的攻擊模式如下所示骡湖。
- 攻擊者誘使用戶觸發(fā)已設(shè)置好的陷阱响蕴,而陷阱會啟動發(fā)送已嵌入攻擊代碼的 HTTP 請求。
- 當(dāng)用戶不知不覺中招之后懊渡,用戶的瀏覽器或郵件客戶端就會觸發(fā)這個陷阱。
- 中招后的用戶瀏覽器會把含有攻擊代碼的 HTTP 請求發(fā)送給作為攻擊目標(biāo)的 Web 應(yīng)用懈息,運行攻擊代碼辫继。
- 執(zhí)行完攻擊代碼俗慈,存在安全漏洞的 Web 應(yīng)用會成為攻擊者的跳板,可能導(dǎo)致用戶所持的 Cookie 等個人信息被竊取炮车,登錄狀態(tài)中的用戶權(quán)限遭惡意濫用等后果瘦穆。
實施 Web 應(yīng)用的安全對策可大致分為以下兩部分扛或。
- 客戶端的驗證Web 應(yīng)用端(服務(wù)器端)的驗證
- 輸入值驗證
- 輸出值轉(zhuǎn)義
多數(shù)情況下采用 JavaScript 在客戶端驗證數(shù)據(jù)熙兔。可是在客戶端允許篡改數(shù)據(jù)或關(guān)閉 JavaScript拢切,不適合將 JavaScript 驗證作為安全的防范對策淮椰。保留客戶端驗證只是為了盡早地辨識輸入錯誤主穗,起到提高 UI 體驗的作用忽媒。Web 應(yīng)用端的輸入值驗證按 Web 應(yīng)用內(nèi)的處理則有可能被誤認(rèn)為是具有攻擊性意義的代碼腋粥。輸入值驗證通常是指檢查是否是符合系統(tǒng)業(yè)務(wù)邏輯的數(shù)值或檢查字符編碼等預(yù)防對策隘冲。
站腳本攻擊(Cross-Site Scripting闹瞧,XSS)是指通過存在安全漏洞的 Web 網(wǎng)站注冊用戶的瀏覽器內(nèi)運行非法的 HTML 標(biāo)簽或 JavaScript 進(jìn)行的一種攻擊展辞。動態(tài)創(chuàng)建的 HTML 部分有可能隱藏著安全漏洞。就這樣罗珍,攻擊者編寫腳本設(shè)下陷阱,用戶在自己的瀏覽器上運行時蘸朋,一不小心就會受到被動攻擊团南。
跨站腳本攻擊有可能造成以下影響:
- 利用虛假輸入表單騙取用戶個人信息已慢。
- 利用腳本竊取用戶的 Cookie 值佑惠,被害者在不知情的情況下膜楷,幫助攻擊者發(fā)送惡意請求。
- 顯示偽造的文章或圖片特愿。
HTTP 頭信息
請求字段(Request)
字段名 | 說明 | 示例 |
---|---|---|
Accept | 指定客戶端能夠接收的內(nèi)容類型 | Accept: text/html |
Accept-Charset | 客戶端可以接受的字符編碼集 | Accept-Charset: utf-8 |
Accept-Encoding | 能夠接受的內(nèi)容編碼方式 | Accept-Encoding:gzip, deflate |
Accept-Language | 可以接受的自然語言列表 | Accept-Language:zh-CN,zh;q=0.9,en;q=0.8 |
Accept-Datetime | 指定接受的版本時間 | Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT |
Authorization | 用于身份認(rèn)證的憑證信息 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Cache-Control | 指定請求緩存機制 | Cache-Control: no-cache |
Connection | 連接類型(默認(rèn)持久連接) | Connection: keep-alive |
Cookie | 向服務(wù)器發(fā)送的Cookie信息 | Cookie: $Version=1; Skin=new; |
Content-Length | 請求信息長度 | Content-Length: 348 |
Content-Type | 當(dāng)前請求MIME類型 | Content-Type:application/json; charset=utf-8 |
Date | 發(fā)送時間 | Date:Thu, 23 Nov 2017 14:41:17 GMT |
Expect | 指明需要的特定服務(wù)器行為 | Expect: 100-continue |
From | 發(fā)起請求的用戶郵箱 | From: admin@321dh.com |
Host | 指明請求服務(wù)器的域名和端口號 | Host:www.321dh.com:80 |
If-Match | 只有請求內(nèi)容與實體相匹配才有效 | If-Match: "737060cd8c284d8af7ad3082f209582d" |
If-Modified-Since | 設(shè)置更新時間 | If-Modified-Since: Sat,29 Oct 1994 19:43:31 GMT |
If-None-Match | 設(shè)置客戶端ETag值 | If-None-Match: "737060cd8c284d8af7ad3082f209582d" |
If-Range | 適用于斷點續(xù)傳下載 | If-Range: "737060cd8c284d8af7ad3082f209582d" |
If-Unmodified-Since | 請求體在給定時間未修改才響應(yīng) | If-Unmodified-Since: Sat,29 Oct 1994 19:43:31 GMT |
Max-Forwards | 限制代理或網(wǎng)關(guān)轉(zhuǎn)發(fā)消息的次數(shù) | Max-Forwards: 10 |
Origin | 跨域資源請求的地址 | Origin: http://www.321dh.com |
Pragma | 設(shè)置特殊實現(xiàn)的指令 | Pragma: no-cache |
Proxy-Authorization | 向連接代理認(rèn)證的憑證信息 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Range | 指定請求返回的字節(jié)數(shù)范圍 | Range: bytes=500-999 |
Referer | 表明當(dāng)前請求從哪個頁面過來的 | Referer: http://www.321dh.com |
TE | 指明期望使用的傳輸編碼 | TE: trailers, deflate |
User-Agent | 請求用戶的身份信息 | Mozilla/5.0 (Mac OS X 10_13_1) Chrome/62.0.3202.94 Safari/537.36 |
Upgrade | 請求服務(wù)端升級協(xié)議 | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
Via | 表明請求代理的來源地址 | Via: 1.0 fred, 1.1 example.com(Apache/1.1) |
Warning | 消息實體中可能存在錯誤的警告 | Warning: 199 Miscellaneous warning |
常見的非標(biāo)準(zhǔn)請求字段
字段名 | 說明 | 示例 |
---|---|---|
X-Requested-With | 指明Ajax及可擴展標(biāo)記語言請求 | X-Requested-With: XMLHttpRequest |
DNT | 設(shè)置是否停止跟蹤用戶 | DNT: 1 |
X-Forwarded-For | 表明客戶端最終連接服務(wù)器的地址 | X-Forwarded-For: client1, proxy1, proxy2 |
X-Forwarded-Host | 表明客戶端要請求的原始主機 | X-Forwarded-Host: www.321dh.com:80 |
X-Csrf-Token | 防止跨站請求偽造 | X-Csrf-Token: i8XNjC4b8KVok4uw5RftR38Wgp2BFwql |
響應(yīng)字段(Response)
字段名 | 說明 | 示例 |
---|---|---|
Access-Control-Allow-Origin | 指定參與跨域的網(wǎng)站 | Access-Control-Allow-Origin: * |
Access-Control-Allow-Methods | 允許的請求方法 | Access-Control-Allow-Methods: GET, PUT, POST, DELETE |
Accept-Patch | 支持的文件類型 | Accept-Patch: text/example;charset=utf-8 |
Accept-Ranges | 支持的部分內(nèi)容范圍類型 | Accept-Ranges: bytes |
Age | 當(dāng)前對象緩存時長 | Age: 244 |
Allow | 對于特定資源有效的動作 | Allow: GET, HEAD |
Cache-Control | 指定緩存機制 | Cache-Control: max-age=3600 |
Connection | 連接類型(默認(rèn)持久連接) | Connection: keep-alive |
Content-Disposition | 告知下載文件的名稱 | Content-Disposition: attachment; filename="name.ext" |
Content-Encoding | 數(shù)據(jù)編碼方式 | Content-Encoding: gzip |
Content-Language | 響應(yīng)內(nèi)容使用的語言 | Content-Language: da |
Content-Length | 信息長度 | Content-Length: 348 |
Content-Location | 響應(yīng)數(shù)據(jù)的地址選項 | Content-Location: /index.htm |
Content-Type | 當(dāng)前內(nèi)容的MIME類型 | Content-Type:application/json |
Date | 響應(yīng)時間 | Date:Fri, 24 Nov 2017 02:59:05 GMT |
Expires | 過期時間 | Expires:Mon, 27 Nov 2017 15:20:50 GMT |
Last-Modified | 最后修改時間 | Last-Modified:Mon, 13 Nov 2017 20:19:12 GMT |
Location | 重定向地址 | Location: http://www.321dh.com/index.html |
Pragma | 特殊實現(xiàn)的指令 | Pragma: no-cache |
Public-Key-Pins | 用于緩解中間人攻擊 | Public-Key-Pins: max-age=250; pin-sha256="ozYqqbQ2yXLVKB9=" |
Refresh | 設(shè)置重定向跳轉(zhuǎn) | Refresh: 5; url=http://www.321dh.com |
Server | 服務(wù)器信息 | Server: nginx/1.13.3 |
Set-Cookie | 發(fā)送給客戶端的數(shù)據(jù) | Set-Cookie: UserID=JohnDoe; Max-Age=3600; |
Status | 狀態(tài) | Status: 304 |
Transfer-Encoding | 數(shù)據(jù)傳輸?shù)木幋a方式 | Transfer-Encoding: chunked |
Upgrade | 要求客戶端升級協(xié)議 | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
Vary | 匹配請求協(xié)議方式 | Vary: Accept-Encoding |
Via | 告知客戶端當(dāng)前響應(yīng)發(fā)送的途徑 | Via: 1.0 fred, 1.1 321dh.com |
WWW-Authenticate | 指定請求使用的認(rèn)證方式 | WWW-Authenticate: Basic |
常見的非標(biāo)準(zhǔn)響應(yīng)字段
字段名 | 說明 | 示例 |
---|---|---|
X-XSS-Protection | XSS跨站腳本攻擊過濾器 | X-XSS-Protection: 1; mode=block |
X-Content-Type-Options | 防止客戶端嗅探文件MIME類型 | X-Content-Type-Options: nosniff |
X-Powered-By | 顯示響應(yīng)腳本語言 | X-Powered-By: PHP/5.4.0 |
X-UA-Compatible | 推薦指定的渲染引擎來顯示內(nèi)容 | X-UA-Compatible: IE=edge |