這是預(yù)防XSS攻擊竊取用戶cookie最有效的防御手段。Web應(yīng)用程序在設(shè)置cookie時(shí),將其屬性設(shè)為,就可以避免該網(wǎng)頁的cookie被客戶端惡意竊取,保護(hù)用戶cookie信息。
二、CSRF
CSRF(Cross Site Request Forgery),即跨站請(qǐng)求偽造,是一種常見的Web攻擊,它利用用戶已登錄的身份,在用戶毫不知情的情況下,以用戶的名義完成非法操作。
1.CSRF攻擊的原理
下面先介紹一下CSRF攻擊的原理:
完成 CSRF 攻擊必須要有三個(gè)條件:
我們來看一個(gè)例子: 當(dāng)我們登入轉(zhuǎn)賬頁面后,突然眼前一亮驚現(xiàn)"XXX隱私照片,不看后悔一輩子"的鏈接,耐不住內(nèi)心躁動(dòng),立馬點(diǎn)擊了該危險(xiǎn)的網(wǎng)站(頁面代碼如下圖所示),但當(dāng)這頁面一加載,便會(huì)執(zhí)行這個(gè)方法來提交轉(zhuǎn)賬請(qǐng)求,從而將10塊轉(zhuǎn)給黑客。
2.如何防御
防范 CSRF 攻擊可以遵循以下幾種規(guī)則:
1)
可以對(duì) Cookie 設(shè)置 屬性。該屬性表示 Cookie 不隨著跨域請(qǐng)求發(fā)送,可以很大程度減少 CSRF 的攻擊,但是該屬性目前并不是所有瀏覽器都兼容。
2) Referer Check
HTTP Referer是header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)送請(qǐng)求時(shí),一般會(huì)帶上Referer信息告訴服務(wù)器是從哪個(gè)頁面鏈接過來的,服務(wù)器籍此可以獲得一些信息用于處理。可以通過檢查請(qǐng)求的來源來防御CSRF攻擊。正常請(qǐng)求的referer具有一定規(guī)律,如在提交表單的referer必定是在該頁面發(fā)起的請(qǐng)求。所以通過檢查http包頭referer的值是不是這個(gè)頁面,來判斷是不是CSRF攻擊。
但在某些情況下如從https跳轉(zhuǎn)到http,瀏覽器處于安全考慮,不會(huì)發(fā)送referer,服務(wù)器就無法進(jìn)行check了。若與該網(wǎng)站同域的其他網(wǎng)站有XSS漏洞,那么攻擊者可以在其他網(wǎng)站注入惡意腳本,受害者進(jìn)入了此類同域的網(wǎng)址,也會(huì)遭受攻擊。出于以上原因,無法完全依賴Referer Check作為防御CSRF的主要手段。但是可以通過Referer Check來監(jiān)控CSRF攻擊的發(fā)生。
3) Anti CSRF Token
目前比較完善的解決方案是加入Anti-CSRF-Token。即發(fā)送請(qǐng)求時(shí)在HTTP 請(qǐng)求中以參數(shù)的形式加入一個(gè)隨機(jī)產(chǎn)生的token,并在服務(wù)器建立一個(gè)攔截器來驗(yàn)證這個(gè)token。服務(wù)器讀取瀏覽器當(dāng)前域cookie中這個(gè)token值,會(huì)進(jìn)行校驗(yàn)該請(qǐng)求當(dāng)中的token和cookie當(dāng)中的token值是否都存在且相等,才認(rèn)為這是合法的請(qǐng)求。否則認(rèn)為這次請(qǐng)求是違法的,拒絕該次服務(wù)。
這種方法相比Referer檢查要安全很多,token可以在用戶登陸后產(chǎn)生并放于session或cookie中,然后在每次請(qǐng)求時(shí)服務(wù)器把token從session或cookie中拿出,與本次請(qǐng)求中的token 進(jìn)行比對(duì)。由于token的存在,攻擊者無法再構(gòu)造出一個(gè)完整的URL實(shí)施CSRF攻擊。但在處理多個(gè)頁面共存問題時(shí),當(dāng)某個(gè)頁面消耗掉token后,其他頁面的表單保存的還是被消耗掉的那個(gè)token,其他頁面的表單提交時(shí)會(huì)出現(xiàn)token錯(cuò)誤。
4) 驗(yàn)證碼
應(yīng)用程序和用戶進(jìn)行交互過程中,特別是賬戶交易這種核心步驟,強(qiáng)制用戶輸入驗(yàn)證碼,才能完成最終請(qǐng)求。在通常情況下,驗(yàn)證碼夠很好地遏制CSRF攻擊。但增加驗(yàn)證碼降低了用戶的體驗(yàn),網(wǎng)站不能給所有的操作都加上驗(yàn)證碼。所以只能將驗(yàn)證碼作為一種輔助手段,在關(guān)鍵業(yè)務(wù)點(diǎn)設(shè)置驗(yàn)證碼。
三、點(diǎn)擊劫持
點(diǎn)擊劫持是一種視覺欺騙的攻擊手段。攻擊者將需要攻擊的網(wǎng)站通過 iframe 嵌套的方式嵌入自己的網(wǎng)頁中,并將 iframe 設(shè)置為透明,在頁面中透出一個(gè)按鈕誘導(dǎo)用戶點(diǎn)擊。
1. 特點(diǎn)2. 點(diǎn)擊劫持的原理
用戶在登陸 A 網(wǎng)站的系統(tǒng)后,被攻擊者誘惑打開第三方網(wǎng)站,而第三方網(wǎng)站通過 iframe 引入了 A 網(wǎng)站的頁面內(nèi)容,用戶在第三方網(wǎng)站中點(diǎn)擊某個(gè)按鈕(被裝飾的按鈕),實(shí)際上是點(diǎn)擊了 A 網(wǎng)站的按鈕。
接下來我們舉個(gè)例子:我在優(yōu)酷發(fā)布了很多視頻,想讓更多的人關(guān)注它,就可以通過點(diǎn)擊劫持來實(shí)現(xiàn)
1iframe?{
2width:?1440px;
3height:?900px;
4position:?absolute;
5top:?-0px;
6left:?-0px;
7z-index:?2;
8-moz-opacity:?0;
9opacity:?0;
10filter:?alpha(opacity=0);
11}
12button?{
13position:?absolute;
14top:?270px;
15left:?1150px;
16z-index:?1;
17width:?90px;
18height:40px;
19}
20
21......
22
23"http://pic1.win4000.com/wallpaper/2018-03-19/5aaf2bf0122d2.jpg">
24<iframe?src=?scrolling="no"></iframe>
從上圖可知,攻擊者通過圖片作為頁面背景,隱藏了用戶操作的真實(shí)界面,當(dāng)你按耐不住好奇點(diǎn)擊按鈕以后,真正的點(diǎn)擊的其實(shí)是隱藏的那個(gè)頁面的訂閱按鈕,然后就會(huì)在你不知情的情況下訂閱了。
3. 如何防御1)X-FRAME-OPTIONS
X-FRAME-OPTIONS是一個(gè) HTTP 響應(yīng)頭,在現(xiàn)代瀏覽器有一個(gè)很好的支持。這個(gè) HTTP 響應(yīng)頭 就是為了防御用 iframe 嵌套的點(diǎn)擊劫持攻擊。
該響應(yīng)頭有三個(gè)值可選,分別是
2) 防御
對(duì)于某些遠(yuǎn)古瀏覽器來說,并不能支持上面的這種方式,那我們只有通過 JS 的方式來防御點(diǎn)擊劫持了。
1<head>
2??<style?id="click-jack">
3????html?{
4??????display:?none?!important;
5????}
6??style>
7head>
8<body>
9??<script>
10????if?(self?==?top)?{
11??????var?style?=?document.getElementById('click-jack')
12??????document.body.removeChild(style)
13????}?else?{
14??????top.location?=?self.location
15????}
16??script>
17body>
以上代碼的作用就是當(dāng)通過 iframe 的方式加載頁面時(shí),攻擊者的網(wǎng)頁直接不顯示所有內(nèi)容了。
四、URL跳轉(zhuǎn)漏洞
定義:借助未驗(yàn)證的URL跳轉(zhuǎn),將應(yīng)用程序引導(dǎo)到不安全的第三方區(qū)域,從而導(dǎo)致的安全問題。
1.URL跳轉(zhuǎn)漏洞原理
黑客利用URL跳轉(zhuǎn)漏洞來誘導(dǎo)安全意識(shí)低的用戶點(diǎn)擊,導(dǎo)致用戶信息泄露或者資金的流失。其原理是黑客構(gòu)建惡意鏈接(鏈接需要進(jìn)行偽裝,盡可能迷惑),發(fā)在QQ群或者是瀏覽量多的貼吧/論壇中。
安全意識(shí)低的用戶點(diǎn)擊后,經(jīng)過服務(wù)器或者瀏覽器解析后,跳到惡意的網(wǎng)站中。
惡意鏈接需要進(jìn)行偽裝,經(jīng)常的做法是熟悉的鏈接后面加上一個(gè)惡意的網(wǎng)址,這樣才迷惑用戶。
諸如偽裝成像如下的網(wǎng)址,你是否能夠識(shí)別出來是惡意網(wǎng)址呢?
1http://gate.baidu.com/index?act=go&url=http://t.cn/RVTatrd
2http://qt.qq.com/safecheck.html?flag=1&url=http://t.cn/RVTatrd
3http://tieba.baidu.com/f/user/passport?jumpUrl=http://t.cn/RVTatrd
2.實(shí)現(xiàn)方式:
這里我們舉個(gè)Header頭跳轉(zhuǎn)實(shí)現(xiàn)方式:
1
2$url=$_GET['jumpto'];
3header("Location:?$url");
4?>
1http://www.wooyun.org/login.php?jumpto=http://www.evil.com
這里用戶會(huì)認(rèn)為都是可信的,但是點(diǎn)擊上述鏈接將導(dǎo)致用戶最終訪問這個(gè)惡意網(wǎng)址。
3.如何防御1)referer的限制
如果確定傳遞URL參數(shù)進(jìn)入的來源,我們可以通過該方式實(shí)現(xiàn)安全限制,保證該URL的有效性,避免惡意用戶自己生成跳轉(zhuǎn)鏈接
2)加入有效性驗(yàn)證Token
我們保證所有生成的鏈接都是來自于我們可信域的,通過在生成的鏈接里加入用戶不可控的Token對(duì)生成的鏈接進(jìn)行校驗(yàn),可以避免用戶生成自己的惡意鏈接從而被利用,但是如果功能本身要求比較開放,可能導(dǎo)致有一定的限制。
五、SQL注入
SQL注入是一種常見的Web安全漏洞,攻擊者利用這個(gè)漏洞,可以訪問或修改數(shù)據(jù),或者利用潛在的數(shù)據(jù)庫漏洞進(jìn)行攻擊。
1.SQL注入的原理
我們先舉一個(gè)萬能鑰匙的例子來說明其原理:
1<form?action="/login"?method="POST">
2????<p>Username:?<input?type="text"?name="username"?/>p>
3????<p>Password:?<input?type="password"?name="password"?/>p>
4????<p><input?type="submit"?value="登陸"?/>p>
5form>
后端的 SQL 語句可能是如下這樣的:
1let?querySQL?=?`
2????SELECT?*
3????FROM?user
4????WHERE?username='${username}'
5????AND?psw='${password}'
6`;
7//?接下來就是執(zhí)行?sql?語句...
8
這是我們經(jīng)常見到的登錄頁面,但如果有一個(gè)惡意攻擊者輸入的用戶名是admin' --,密碼隨意輸入,就可以直接登入系統(tǒng)了。why! ----這就是SQL注入
我們之前預(yù)想的SQL 語句是:
1SELECT?*?FROM?user?WHERE?username='admin'?AND?psw='password'
但是惡意攻擊者用奇怪用戶名將你的 SQL 語句變成了如下形式:
1SELECT?*?FROM?user?WHERE?username='admin'?--'?AND?psw='xxxx'
在 SQL 中,' --是閉合和注釋的意思,-- 是注釋后面的內(nèi)容的意思,所以查詢語句就變成了:
1SELECT?*?FROM?user?WHERE?username='admin'
所謂的萬能密碼,本質(zhì)上就是SQL注入的一種利用方式。
一次SQL注入的過程包括以下幾個(gè)過程:
SQL注入的必備條件: 1.可以控制輸入的數(shù)據(jù) 2.服務(wù)器要執(zhí)行的代碼拼接了控制的數(shù)據(jù)。
我們會(huì)發(fā)現(xiàn)SQL注入流程中與正常請(qǐng)求服務(wù)器類似,只是黑客控制了數(shù)據(jù),構(gòu)造了SQL查詢,而正常的請(qǐng)求不會(huì)SQL查詢這一步,SQL注入的本質(zhì):數(shù)據(jù)和代碼未分離,即數(shù)據(jù)當(dāng)做了代碼來執(zhí)行。
2.危害3.如何防御六、OS命令注入攻擊
OS命令注入和SQL注入差不多,只不過SQL注入是針對(duì)數(shù)據(jù)庫的,而OS命令注入是針對(duì)操作系統(tǒng)的。OS命令注入攻擊指通過Web應(yīng)用,執(zhí)行非法的操作系統(tǒng)命令達(dá)到攻擊的目的。只要在能調(diào)用Shell函數(shù)的地方就有存在被攻擊的風(fēng)險(xiǎn)。倘若調(diào)用Shell時(shí)存在疏漏,就可以執(zhí)行插入的非法命令。
命令注入攻擊可以向Shell發(fā)送命令,讓W(xué)indows或Linux操作系統(tǒng)的命令行啟動(dòng)程序。也就是說,通過命令注入攻擊可執(zhí)行操作系統(tǒng)上安裝著的各種程序。
1.原理
黑客構(gòu)造命令提交給web應(yīng)用程序,web應(yīng)用程序提取黑客構(gòu)造的命令,拼接到被執(zhí)行的命令中,因黑客注入的命令打破了原有命令結(jié)構(gòu),導(dǎo)致web應(yīng)用執(zhí)行了額外的命令,最后web應(yīng)用程序?qū)?zhí)行的結(jié)果輸出到響應(yīng)頁面中。
我們通過一個(gè)例子來說明其原理,假如需要實(shí)現(xiàn)一個(gè)需求:用戶提交一些內(nèi)容到服務(wù)器,然后在服務(wù)器執(zhí)行一些系統(tǒng)命令去返回一個(gè)結(jié)果給用戶
1//?以?Node.js?為例,假如在接口中需要從?github?下載用戶指定的?repo
2const?exec?=?require('mz/child_process').exec;
3let?params?=?{/*?用戶輸入的參數(shù)?*/};
4exec(`git?clone?${params.repo}?/some/path`);
params.repo傳入的是確實(shí)能從指定的 git repo 上下載到想要的代碼。
但是如果params.repo傳入的是 && rm -rf /* &&恰好你的服務(wù)是用 root 權(quán)限起的就糟糕了。
2.如何防御參考資料
●
●
●
●
—完—
勿瀏覽不良網(wǎng)站!手機(jī)出現(xiàn)這幾種異常現(xiàn)象,可能已中毒
在使用手機(jī)瀏覽網(wǎng)頁時(shí),有些人可能會(huì)帶著一顆好奇的心訪問一些不良網(wǎng)站。
要知道,黑客可能通過非法手段入侵不良網(wǎng)站,并在其中植入各種網(wǎng)絡(luò)威脅。
如果你正在訪問這類網(wǎng)站,不僅影響你的身心健康,還會(huì)讓你的手機(jī)和個(gè)人隱私數(shù)據(jù)面臨安全風(fēng)險(xiǎn)。
若手機(jī)出現(xiàn)以下幾種異常情況,一定要注意了,可能你已經(jīng)被不良網(wǎng)站“盯上”了。請(qǐng)盡早停手,以免造成更大損失。
不小心訪問了這類網(wǎng)站后,發(fā)現(xiàn)手機(jī)在打開應(yīng)用時(shí)開始變卡,滑動(dòng)屏幕也出現(xiàn)延遲。可能被惡意代碼“劫持”了。
不良網(wǎng)站暗藏了木馬病毒或者廣告插件,這些惡意程序會(huì)占用手機(jī)后臺(tái)資源,直接導(dǎo)致系統(tǒng)性能下降,手機(jī)變得像“老爺機(jī)”一樣。
再一個(gè),廣告彈窗不斷,關(guān)都關(guān)不掉。
正常的廣告都是在應(yīng)用里出現(xiàn),用戶可以選擇性地點(diǎn)擊或關(guān)閉。
而當(dāng)廣告頻繁彈出,還會(huì)在你沒打開任何應(yīng)用的時(shí)候突然“從天而降”,這就是所謂的“病毒式廣告”,多半來自不良網(wǎng)站,它會(huì)劫持瀏覽器或桌面,強(qiáng)行增加曝光率。
不僅擾人,還會(huì)誤導(dǎo)你去點(diǎn)擊帶有惡意內(nèi)容的鏈接,千萬別隨意點(diǎn)擊!以免落入網(wǎng)絡(luò)釣魚陷阱。目的是竊取你的個(gè)人信息,如用戶名、密碼、銀行賬戶信息等,進(jìn)而導(dǎo)致身份被盜用或錢財(cái)損失。
然后是手機(jī)自動(dòng)下載了一些奇怪的軟件。
手機(jī)桌面上多了幾個(gè)從未下載過的APP,而且這些應(yīng)用往往都不是正規(guī)商店的,十有八九是惡意程序。不良網(wǎng)站會(huì)在用戶不知情的情況下,通過跳轉(zhuǎn)頁面的方式自動(dòng)下載一些軟件。
并且,這些程序還會(huì)在后臺(tái)運(yùn)行,消耗流量、竊取隱私,盜取支付信息。
可千萬別使用這些來路不明的軟件!
手機(jī)突然發(fā)燙,是因?yàn)楹笈_(tái)程序在瘋狂運(yùn)轉(zhuǎn)。然而,在你沒有運(yùn)行任何大型應(yīng)用,手機(jī)依然發(fā)熱、耗電飛速,這就要警惕了。
不良網(wǎng)站會(huì)在你的設(shè)備上植入挖礦程序,利用你的手機(jī)資源挖取虛擬貨幣。換句話說,手機(jī)在你不知情的情況下“打工”,怪不得電量飛速下降。
開始收到莫名其妙的短信,還經(jīng)常被陌生電話“轟炸”,這很可能就是瀏覽過不良網(wǎng)站帶來的“后遺癥”。
惡意網(wǎng)站在后臺(tái)收集了你的信息,并將數(shù)據(jù)賣給第三方公司,讓你的隱私被肆意傳播!
這些信息通常以“緊急通知”或“優(yōu)惠活動(dòng)”等字眼吸引你點(diǎn)擊,實(shí)際上卻是另一個(gè)釣魚陷阱。
上網(wǎng)沖浪時(shí),安全問題始終是我們最關(guān)心的。
瀏覽網(wǎng)站時(shí),應(yīng)避開不良網(wǎng)站,以免掉入以上的這些陷阱。
如果不幸中招,建議盡快使用系統(tǒng)自帶的安全軟件進(jìn)行一次全面的病毒掃描,及時(shí)清理掉有潛在威脅的軟件,恢復(fù)手機(jī)流暢度,必要時(shí)還可以考慮備份數(shù)據(jù)后恢復(fù)出廠設(shè)置!
“
我就知道你在看!
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。