Web 安全入門(mén)之常見(jiàn)攻擊

Web 安全入門(mén)之常見(jiàn)攻擊

搞 Web 開(kāi)發(fā)離不開(kāi)安全這個(gè)話(huà)題,確保網(wǎng)站或者網(wǎng)頁(yè)應(yīng)用的安全性,是每個(gè)開(kāi)發(fā)人員都應(yīng)該了解的事。本篇主要簡(jiǎn)單介紹在 Web 領(lǐng)域幾種常見(jiàn)的攻擊手段。

1. Cross Site Script(XSS衫嵌, 跨站腳本攻擊)

首先插播一句,為毛叫 XSS彻秆,縮寫(xiě)明顯是 CSS 靶ń省?沒(méi)錯(cuò)唇兑,為了防止與我們熟悉的 CSS(Cascading Style Sheets)混淆酒朵,所以干脆更名為 XSS。

那 XSS 是什么呢扎附?一言蔽之蔫耽,XSS 就是攻擊者在 Web 頁(yè)面中插入惡意腳本,當(dāng)用戶(hù)瀏覽頁(yè)面時(shí)留夜,促使腳本執(zhí)行匙铡,從而達(dá)到攻擊目的图甜。XSS 的特點(diǎn)就是想盡一切辦法在目標(biāo)網(wǎng)站上執(zhí)行第三方腳本。

( 圖片來(lái)源:XSS Tutorial?)

舉個(gè)例子鳖眼。原有的網(wǎng)站有個(gè)將數(shù)據(jù)庫(kù)中的數(shù)據(jù)顯示到頁(yè)面的上功能黑毅,document.write("data from server")。但如果服務(wù)器沒(méi)有驗(yàn)證數(shù)據(jù)類(lèi)型钦讳,直接接受任何數(shù)據(jù)時(shí)矿瘦,攻擊者可以會(huì)將 當(dāng)做一個(gè)數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)。當(dāng)其他用戶(hù)請(qǐng)求這個(gè)數(shù)據(jù)時(shí)蜂厅,網(wǎng)站原有的腳本就會(huì)執(zhí)行 document.write("http://www.evil.com/bad-script.js'>")匪凡,這樣,便會(huì)執(zhí)行 bad-script.js掘猿。如果攻擊者在這段第三方的腳本中寫(xiě)入惡意腳本,那么普通用戶(hù)便會(huì)受到攻擊唇跨。

XSS 主要有三種類(lèi)型:

存儲(chǔ)型 XSS: 注入的腳本永久的存在于目標(biāo)服務(wù)器上稠通,每當(dāng)受害者向服務(wù)器請(qǐng)求此數(shù)據(jù)時(shí)就會(huì)重新喚醒攻擊腳本;

反射型 XSS: 當(dāng)用受害者被引誘點(diǎn)擊一個(gè)惡意鏈接买猖,提交一個(gè)偽造的表單改橘,惡意代碼便會(huì)和正常返回?cái)?shù)據(jù)一起作為響應(yīng)發(fā)送到受害者的瀏覽器,從而騙過(guò)了瀏覽器玉控,使之誤以為惡意腳本來(lái)自于可信的服務(wù)器飞主,以至于讓惡意腳本得以執(zhí)行。

( 圖片來(lái)源:?Cross-Site Scripting (XSS)?)

DOM 型 XSS: 有點(diǎn)類(lèi)似于存儲(chǔ)型 XSS高诺,但存儲(chǔ)型 XSS 是將惡意腳本作為數(shù)據(jù)存儲(chǔ)在服務(wù)器中碌识,每個(gè)調(diào)用數(shù)據(jù)的用戶(hù)都會(huì)受到攻擊。但 DOM 型 XSS 則是一個(gè)本地的行為虱而,更多是本地更新 DOM 時(shí)導(dǎo)致了惡意腳本執(zhí)行筏餐。

那么如何防御 XSS 攻擊呢?

從客戶(hù)端和服務(wù)器端雙重驗(yàn)證所有的輸入數(shù)據(jù)牡拇,這一般能阻擋大部分注入的腳本

對(duì)所有的數(shù)據(jù)進(jìn)行適當(dāng)?shù)木幋a

設(shè)置 HTTP Header: "X-XSS-Protection: 1"

2. SQL Injection (SQL 注入)

所謂 SQL 注入魁瞪,就是通過(guò)客戶(hù)端的輸入把 SQL 命令注入到一個(gè)應(yīng)用的數(shù)據(jù)庫(kù)中,從而得以執(zhí)行惡意 SQL 語(yǔ)句惠呼。

先看個(gè)例子导俘。

uname = request.POST['username']

password = request.POST['password']

sql = "SELECT all FROM users WHERE username='" + uname + "' AND password='" + password + "'"

database.execute(sql)

上面這段程序直接將客戶(hù)端傳過(guò)來(lái)的數(shù)據(jù)寫(xiě)入到數(shù)據(jù)庫(kù)。試想一下剔蹋,如果用戶(hù)傳入的 password 值是: "password’ OR 1=1"旅薄,那么 sql 語(yǔ)句便會(huì)變成:

sql = "SELECT all FROM users WHERE username='username' AND password='password' OR 1=1"

那么,這句 sql 無(wú)論 username 和 password 是什么都會(huì)執(zhí)行滩租,從而將所有用戶(hù)的信息取出來(lái)赋秀。

那么怎么預(yù)防 sql 的問(wèn)題呢利朵?

想要提出解決方案,先看看 sql 注入得以施行的因素:

網(wǎng)頁(yè)應(yīng)用使用 SQL 來(lái)控制數(shù)據(jù)庫(kù)

用戶(hù)傳入的數(shù)據(jù)直接被寫(xiě)入數(shù)據(jù)庫(kù)

根據(jù)?OWASP猎莲,下面看看具體的預(yù)防措施绍弟。

Prepared Statements (with Parameterized Queries): 參數(shù)化的查詢(xún)語(yǔ)句可以強(qiáng)制應(yīng)用開(kāi)發(fā)者首先定義所有的 sql 代碼,之后再將每個(gè)參數(shù)傳遞給查詢(xún)語(yǔ)句

Stored Procedures: 使用語(yǔ)言自帶的存儲(chǔ)程序著洼,而不是自己直接操縱數(shù)據(jù)庫(kù)

White List Input Validation: 驗(yàn)證用戶(hù)的輸入

Escaping All User Supplied Input: 對(duì)用戶(hù)提供的所有的輸入都進(jìn)行編碼

3. Distributed Denial of Service (DDoS樟遣, 分布式拒絕服務(wù))

DoS 攻擊就是通過(guò)大量惡意流量占用帶寬和計(jì)算資源以達(dá)到癱瘓對(duì)方網(wǎng)絡(luò)的目的。

舉個(gè)簡(jiǎn)單的例子身笤,老鄭家面館生意紅火豹悬,突然有一天一群小混混進(jìn)了點(diǎn),霸占了座位液荸,只閑聊不點(diǎn)菜瞻佛,結(jié)果坐在店里的人不吃面,想吃面的人進(jìn)不來(lái)娇钱,導(dǎo)致老鄭無(wú)法向正成吮客戶(hù)服務(wù)。

而 DDoS 攻擊就是將多個(gè)計(jì)算機(jī)聯(lián)合起來(lái)一同向目標(biāo)發(fā)起攻擊文搂,從而成倍地提高拒絕服務(wù)攻擊的威力适刀。

(圖片來(lái)源于:?DDoSCoin - An Incentive to Launch DDoS Attacks?

一般 DDoS 攻擊有兩個(gè)目的:

敲詐勒索,逼你花錢(qián)買(mǎi)平安

打擊競(jìng)爭(zhēng)對(duì)手

在技術(shù)角度上煤蹭,DDoS攻擊可以針對(duì)網(wǎng)絡(luò)通訊協(xié)議的各層笔喉,手段大致有:TCP類(lèi)的SYN Flood、ACK Flood硝皂,UDP類(lèi)的Fraggle常挚、Trinoo,DNS Query Flood吧彪,ICMP Flood待侵,Slowloris類(lèi)、各種社工方式等等姨裸,這些技術(shù)這里不做詳細(xì)解釋秧倾。但是一般會(huì)根據(jù)攻擊目標(biāo)的情況,針對(duì)性的把技術(shù)手法混合傀缩,以達(dá)到最低的成本最難防御的目的那先,并且可以進(jìn)行合理的節(jié)奏控制,以及隱藏保護(hù)攻擊資源赡艰。

阿里巴巴的安全團(tuán)隊(duì)在實(shí)戰(zhàn)中發(fā)現(xiàn)售淡,DDoS 防御產(chǎn)品的核心是檢測(cè)技術(shù)和清洗技術(shù)。檢測(cè)技術(shù)就是檢測(cè)網(wǎng)站是否正在遭受 DDoS 攻擊,而清洗技術(shù)就是清洗掉異常流量揖闸。而檢測(cè)技術(shù)的核心在于對(duì)業(yè)務(wù)深刻的理解揍堕,才能快速精確判斷出是否真的發(fā)生了 DDoS 攻擊。清洗技術(shù)對(duì)檢測(cè)來(lái)講汤纸,不同的業(yè)務(wù)場(chǎng)景下要求的粒度不一樣衩茸。

4. Cross Site Request Forgery (CSRF, 跨站請(qǐng)求偽造)

簡(jiǎn)單來(lái)說(shuō)贮泞,CSRF 就是網(wǎng)站 A 對(duì)用戶(hù)建立信任關(guān)系后楞慈,在網(wǎng)站 B 上利用這種信任關(guān)系,跨站點(diǎn)向網(wǎng)站 A 發(fā)起一些偽造的用戶(hù)操作請(qǐng)求啃擦,以達(dá)到攻擊的目的囊蓝。

舉個(gè)例子。網(wǎng)站 A 是一家銀行的網(wǎng)站令蛉,一個(gè)轉(zhuǎn)賬接口是 "http://www.bankA.com/transfer?toID=12345678&cash=1000"聚霜。toID 表示轉(zhuǎn)賬的目標(biāo)賬戶(hù),cash 表示轉(zhuǎn)賬數(shù)目珠叔。當(dāng)然這個(gè)接口沒(méi)法隨便調(diào)用俯萎,只有在已經(jīng)驗(yàn)證的情況下才能夠被調(diào)用。

此時(shí)运杭,攻擊者建立了一個(gè) B 網(wǎng)站,里面放了一段隱藏的代碼体斩,用來(lái)調(diào)用轉(zhuǎn)賬的接口谷扣。當(dāng)受害者先成功登錄了 A 網(wǎng)站拦止,短時(shí)間內(nèi)不需要再次驗(yàn)證,這個(gè)時(shí)候又訪(fǎng)問(wèn)了網(wǎng)站 B虱咧,B 里面隱藏的惡意代碼就能夠成功執(zhí)行。

那怎么預(yù)防 CSRF 攻擊呢锚国?OWASP?推薦了兩種檢查方式來(lái)作為防御手段腕巡。

檢查標(biāo)準(zhǔn)頭部,確認(rèn)請(qǐng)求是否同源: 檢查 source origin 和 target origin血筑,然后比較兩個(gè)值是否匹配

檢查 CSRF Token: 主要有四種推薦的方式

Synchronizer Tokens: 在表單里隱藏一個(gè)隨機(jī)變化的 token绘沉,每當(dāng)用戶(hù)提交表單時(shí),將這個(gè) token 提交到后臺(tái)進(jìn)行驗(yàn)證豺总,如果驗(yàn)證通過(guò)則可以繼續(xù)執(zhí)行操作车伞。這種情況有效的主要原因是網(wǎng)站 B 拿不到網(wǎng)站 A 表單里的 token;

Double Cookie Defense: 當(dāng)向服務(wù)器發(fā)出請(qǐng)求時(shí),生成一個(gè)隨機(jī)值喻喳,將這個(gè)隨機(jī)值既放在 cookie 中另玖,也放在請(qǐng)求的參數(shù)中,服務(wù)器同時(shí)驗(yàn)證這兩個(gè)值是否匹配;

Encrypted Token Pattern: 對(duì) token 進(jìn)行加密

Custom Header: 使用自定義請(qǐng)求頭部谦去,這個(gè)方式依賴(lài)于同源策略慷丽。其中最適合的自定義頭部便是: "X-Requested-With: XMLHttpRequest"

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鳄哭,隨后出現(xiàn)的幾起案子要糊,更是在濱河造成了極大的恐慌,老刑警劉巖窃诉,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杨耙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡飘痛,警方通過(guò)查閱死者的電腦和手機(jī)珊膜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宣脉,“玉大人车柠,你說(shuō)我怎么就攤上這事∷懿” “怎么了竹祷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)羊苟。 經(jīng)常有香客問(wèn)我塑陵,道長(zhǎng),這世上最難降的妖魔是什么蜡励? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任令花,我火速辦了婚禮,結(jié)果婚禮上凉倚,老公的妹妹穿的比我還像新娘兼都。我一直安慰自己,他們只是感情好稽寒,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布扮碧。 她就那樣靜靜地躺著,像睡著了一般杏糙。 火紅的嫁衣襯著肌膚如雪慎王。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天搔啊,我揣著相機(jī)與錄音柬祠,去河邊找鬼。 笑死负芋,一個(gè)胖子當(dāng)著我的面吹牛漫蛔,可吹牛的內(nèi)容都是我干的嗜愈。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼莽龟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蠕嫁!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起毯盈,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤剃毒,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后搂赋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赘阀,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年脑奠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了基公。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宋欺,死狀恐怖轰豆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情齿诞,我是刑警寧澤酸休,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站祷杈,受9級(jí)特大地震影響斑司,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜但汞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一陡厘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧特占,春花似錦、人聲如沸云茸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)标捺。三九已至懊纳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間亡容,已是汗流浹背嗤疯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闺兢,地道東北人茂缚。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親脚囊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子龟糕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 常見(jiàn)web攻擊:https://www.cnblogs.com/morethink/p/8734103.html搞...
    SkTj閱讀 1,311評(píng)論 0 41
  • 搞Web開(kāi)發(fā)離不開(kāi)安全這個(gè)話(huà)題,確保網(wǎng)站或者網(wǎng)頁(yè)應(yīng)用的安全性悔耘,是每個(gè)開(kāi)發(fā)人員都應(yīng)該了解的事讲岁。本篇主要簡(jiǎn)單介紹在We...
    timothyue1閱讀 462評(píng)論 0 0
  • 20180626 【今日閱讀心得】 第二十三個(gè)維度:有線(xiàn)下聚會(huì) 在社群營(yíng)銷(xiāo)的過(guò)程中,維護(hù)好元素(會(huì)員)之間的關(guān)系衬以,...
    樊登書(shū)店Linda閱讀 168評(píng)論 0 0
  • 每天被生活壓的喘不過(guò)氣看峻,但是每天都必須全力以赴阶淘,特別在北京這座消費(fèi)的特大城市更是如此,俗話(huà)說(shuō)的好备籽,逆流前行不進(jìn)...
    峰彬閱讀 208評(píng)論 0 10
  • 黃昏時(shí)分舶治,課程結(jié)束,自嘉應(yīng)學(xué)院南校門(mén)步行路過(guò)月梅车猬,不禁站在那小道口往里望去霉猛。 大約是十三年前,我還是個(gè)男童裝扮...
    范叔寒閱讀 304評(píng)論 0 1