摘要:應(yīng)用常見安全漏洞一覽注入注入就是通過(guò)給應(yīng)用接口傳入一些特殊字符,達(dá)到欺騙服務(wù)器執(zhí)行惡意的命令。此外,適當(dāng)?shù)臋?quán)限控制不曝露必要的安全信息和日志也有助于預(yù)防注入漏洞。
web 應(yīng)用常見安全漏洞一覽 1. SQL 注入
SQL 注入就是通過(guò)給 web 應(yīng)用接口傳入一些特殊字符,達(dá)到欺騙服務(wù)器執(zhí)行惡意的 SQL 命令。
SQL 注入漏洞屬于后端的范疇,但前端也可做體驗(yàn)上的優(yōu)化。
原因當(dāng)使用外部不可信任的數(shù)據(jù)作為參數(shù)進(jìn)行數(shù)據(jù)庫(kù)的增、刪、改、查時(shí),如果未對(duì)外部數(shù)據(jù)進(jìn)行過(guò)濾,就會(huì)產(chǎn)生 SQL 注入漏洞。
比如:
name = "外部輸入名稱"; sql = "select * from users where name=" + name;
上面的 SQL 語(yǔ)句目的是通過(guò)用戶輸入的用戶名查找用戶信息,因?yàn)橛捎?SQL 語(yǔ)句是直接拼接的,也沒(méi)有進(jìn)行過(guò)濾,所以,當(dāng)用戶輸入 "" or "1"="1" 時(shí),這個(gè)語(yǔ)句的功能就是搜索 users 全表的記錄。
select * from users where name="" or "1"="1";解決方案
具體的解決方案很多,但大部分都是基于一點(diǎn):不信任任何外部輸入。
所以,對(duì)任何外部輸入都進(jìn)行過(guò)濾,然后再進(jìn)行數(shù)據(jù)庫(kù)的增、刪、改、查。
此外,適當(dāng)?shù)臋?quán)限控制、不曝露必要的安全信息和日志也有助于預(yù)防 SQL 注入漏洞。
參考 Web 安全漏洞之 SQL 注入 - 防御方法 了解具體的解決方案。
推薦參考Web 安全漏洞之 SQL 注入
SQL 注入詳解
2. XSS 攻擊XSS 攻擊全稱跨站腳本攻擊(Cross-Site Scripting),簡(jiǎn)單的說(shuō)就是攻擊者通過(guò)在目標(biāo)網(wǎng)站上注入惡意腳本并運(yùn)行,獲取用戶的敏感信息如 Cookie、SessionID 等,影響網(wǎng)站與用戶數(shù)據(jù)安全。
XSS 攻擊更偏向前端的范疇,但后端在保存數(shù)據(jù)的時(shí)候也需要對(duì)數(shù)據(jù)進(jìn)行安全過(guò)濾。
原因當(dāng)攻擊者通過(guò)某種方式向?yàn)g覽器頁(yè)面注入了惡意代碼,并且瀏覽器執(zhí)行了這些代碼。
比如:
在一個(gè)文章應(yīng)用中(如微信文章),攻擊者在文章編輯后臺(tái)通過(guò)注入 script 標(biāo)簽及 js 代碼,后端未加過(guò)濾就保存到數(shù)據(jù)庫(kù),前端渲染文章詳情的時(shí)候也未加過(guò)濾,這就會(huì)讓這段 js 代碼執(zhí)行,引起 XSS 攻擊。
解決方案一個(gè)基本的思路是渲染前端頁(yè)面(不管是客戶端渲染還是服務(wù)器端渲染)或者動(dòng)態(tài)插入 HTML 片段時(shí),任何數(shù)據(jù)都不可信任,都要先做 HTML 過(guò)濾,然后再渲染。
參考 前端安全系列(一):如何防止XSS攻擊? - 攻擊的預(yù)防 了解具體的解決方案。
推薦參考前端安全系列(一):如何防止XSS攻擊?
前端防御 XSS
淺說(shuō) XSS 和 CSRF
3. CSRF 攻擊CSRF 攻擊全稱跨站請(qǐng)求偽造(Cross-site Request Forgery),簡(jiǎn)單的說(shuō)就是攻擊者盜用了你的身份,以你的名義發(fā)送惡意請(qǐng)求。
原因一個(gè)典型的 CSRF 攻擊有著如下的流程:
受害者登錄 a.com,并保留了登錄憑證(Cookie)
攻擊者引誘受害者訪問(wèn)了 b.com
b.com 向 a.com 發(fā)送了一個(gè)請(qǐng)求:a.com/act=xx(瀏覽器會(huì)默認(rèn)攜帶 a.com 的 Cookie)
a.com 接收到請(qǐng)求后,對(duì)請(qǐng)求進(jìn)行驗(yàn)證,并確認(rèn)是受害者的憑證,誤以為是受害者自己發(fā)送的請(qǐng)求
a.com 以受害者的名義執(zhí)行了 act=xx
攻擊完成,攻擊者在受害者不知情的情況下,冒充受害者,讓 a.com 執(zhí)行了自己定義的操作
注:上面的過(guò)程摘自 前端安全系列之二:如何防止CSRF攻擊?
解決方案防止 CSRF 攻擊需要在服務(wù)器端入手,基本的思路是能正確識(shí)別是否是用戶發(fā)起的請(qǐng)求。
參考 前端安全系列之二:如何防止CSRF攻擊? - 防護(hù)策略 了解具體的解決方案。
推薦參考前端安全系列之二:如何防止CSRF攻擊?
Web安全漏洞之CSRF
淺說(shuō) XSS 和 CSRF
4. DDoS 攻擊DoS 攻擊全稱拒絕服務(wù)(Denial of Service),簡(jiǎn)單的說(shuō)就是讓一個(gè)公開網(wǎng)站無(wú)法訪問(wèn),而 DDoS 攻擊(分布式拒絕服務(wù) Distributed Denial of Service)是 DoS 的升級(jí)版。
這個(gè)就完全屬于后端的范疇了。
原因攻擊者不斷地提出服務(wù)請(qǐng)求,讓合法用戶的請(qǐng)求無(wú)法及時(shí)處理,這就是 DoS 攻擊。
攻擊者使用多臺(tái)計(jì)算機(jī)或者計(jì)算機(jī)集群進(jìn)行 DoS 攻擊,就是 DDoS 攻擊。
解決方案防止 DDoS 攻擊的基本思路是限流,限制單個(gè)用戶的流量(包括 IP 等)。
參考 DDoS的攻擊及防御 - 防御 了解具體的解決方案。
推薦參考DDoS的攻擊及防御
淺談 DDoS 攻擊與防御
使用 Nginx、Nginx Plus 抵御 DDOS 攻擊
5. XXE 漏洞XXE 漏洞全稱 XML 外部實(shí)體漏洞(XML External Entity),當(dāng)應(yīng)用程序解析 XML 輸入時(shí),如果沒(méi)有禁止外部實(shí)體的加載,導(dǎo)致可加載惡意外部文件和代碼,就會(huì)造成任意文件讀取、命令執(zhí)行、內(nèi)網(wǎng)端口掃描、攻擊內(nèi)網(wǎng)網(wǎng)站等攻擊。
這個(gè)只在能夠接收 XML 格式參數(shù)的接口才會(huì)出現(xiàn)。
解決方案禁用外部實(shí)體
過(guò)濾用戶提交的XML數(shù)據(jù)
參考 xxe漏洞的學(xué)習(xí)與利用總結(jié) 了解具體的解決方案。
推薦參考好剛: 6分鐘視頻看懂XXE漏洞攻擊
xxe漏洞的學(xué)習(xí)與利用總結(jié)
XXE漏洞攻防學(xué)習(xí)(上)
6. JSON 劫持JSON 劫持(JSON Hijacking)是用于獲取敏感數(shù)據(jù)的一種攻擊方式,屬于 CSRF 攻擊的范疇。
原因一些 Web 應(yīng)用會(huì)把一些敏感數(shù)據(jù)以 json 的形式返回到前端,如果僅僅通過(guò) Cookie 來(lái)判斷請(qǐng)求是否合法,那么就可以利用類似 CSRF 的手段,向目標(biāo)服務(wù)器發(fā)送請(qǐng)求,以獲得敏感數(shù)據(jù)。
比如下面的鏈接在已登錄的情況下會(huì)返回 json 格式的用戶信息:
http://www.test.com/userinfo
攻擊者可以在自己的虛假頁(yè)面中,加入如下標(biāo)簽:
如果當(dāng)前瀏覽器已經(jīng)登錄了 www.test.com,并且 Cookie 未過(guò)期,然后訪問(wèn)了攻擊者的虛假頁(yè)面,那么該頁(yè)面就可以拿到 json 形式的用戶敏感信息,因?yàn)?script 標(biāo)簽會(huì)自動(dòng)解析 json 數(shù)據(jù),生成對(duì)應(yīng)的 js 對(duì)象。然后再通過(guò):
Object.prototype.__defineSetter__
這個(gè)函數(shù)來(lái)觸發(fā)自己的惡意代碼。
但是這個(gè)函數(shù)在當(dāng)前的新版本 Chrome 和 Firefox 中都已經(jīng)失效了。
注:上面的過(guò)程摘自 JSON和JSONP劫持以及解決方法
解決方案X-Requested-With 標(biāo)識(shí)
瀏覽器 JSON 數(shù)據(jù)識(shí)別
禁止 Javascript 執(zhí)行 JSON 數(shù)據(jù)
推薦參考JSON和JSONP劫持以及解決方法
JSONP 安全攻防技術(shù)(JSON劫持、 XSS漏洞)
7. 暴力破解這個(gè)一般針對(duì)密碼而言,弱密碼(Weak Password)很容易被別人(對(duì)你很了解的人等)猜到或被破解工具暴力破解。
解決方案密碼復(fù)雜度要足夠大,也要足夠隱蔽
限制嘗試次數(shù)
8. HTTP 報(bào)頭追蹤漏洞HTTP/1.1(RFC2616)規(guī)范定義了 HTTP TRACE 方法,主要是用于客戶端通過(guò)向 Web 服務(wù)器提交 TRACE 請(qǐng)求來(lái)進(jìn)行測(cè)試或獲得診斷信息。
當(dāng) Web 服務(wù)器啟用 TRACE 時(shí),提交的請(qǐng)求頭會(huì)在服務(wù)器響應(yīng)的內(nèi)容(Body)中完整的返回,其中 HTTP 頭很可能包括 Session Token、Cookies 或其它認(rèn)證信息。攻擊者可以利用此漏洞來(lái)欺騙合法用戶并得到他們的私人信息。
解決方案禁用 HTTP TRACE 方法。
9. 信息泄露由于 Web 服務(wù)器或應(yīng)用程序沒(méi)有正確處理一些特殊請(qǐng)求,泄露 Web 服務(wù)器的一些敏感信息,如用戶名、密碼、源代碼、服務(wù)器信息、配置信息等。
所以一般需注意:
應(yīng)用程序報(bào)錯(cuò)時(shí),不對(duì)外產(chǎn)生調(diào)試信息
過(guò)濾用戶提交的數(shù)據(jù)與特殊字符
保證源代碼、服務(wù)器配置的安全
10. 目錄遍歷漏洞攻擊者向 Web 服務(wù)器發(fā)送請(qǐng)求,通過(guò)在 URL 中或在有特殊意義的目錄中附加 ../、或者附加 ../ 的一些變形(如 .. 或 ..// 甚至其編碼),導(dǎo)致攻擊者能夠訪問(wèn)未授權(quán)的目錄,以及在 Web 服務(wù)器的根目錄以外執(zhí)行命令。
11. 命令執(zhí)行漏洞命令執(zhí)行漏洞是通過(guò) URL 發(fā)起請(qǐng)求,在 Web 服務(wù)器端執(zhí)行未授權(quán)的命令,獲取系統(tǒng)信息、篡改系統(tǒng)配置、控制整個(gè)系統(tǒng)、使系統(tǒng)癱瘓等。
12. 文件上傳漏洞如果對(duì)文件上傳路徑變量過(guò)濾不嚴(yán),并且對(duì)用戶上傳的文件后綴以及文件類型限制不嚴(yán),攻擊者可通過(guò) Web 訪問(wèn)的目錄上傳任意文件,包括網(wǎng)站后門文件(webshell),進(jìn)而遠(yuǎn)程控制網(wǎng)站服務(wù)器。
所以一般需注意:
在開發(fā)網(wǎng)站及應(yīng)用程序過(guò)程中,需嚴(yán)格限制和校驗(yàn)上傳的文件,禁止上傳惡意代碼的文件
限制相關(guān)目錄的執(zhí)行權(quán)限,防范 webshell 攻擊
13. 其他漏洞SSLStrip 攻擊
OpenSSL Heartbleed 安全漏洞
CCS 注入漏洞
證書有效性驗(yàn)證漏洞
14. 業(yè)務(wù)漏洞一般業(yè)務(wù)漏洞是跟具體的應(yīng)用程序相關(guān),比如參數(shù)篡改(連續(xù)編號(hào) ID / 訂單、1 元支付)、重放攻擊(偽裝支付)、權(quán)限控制(越權(quán)操作)等。
另外可以參考:6種常見web漏洞坑
15. 框架或應(yīng)用漏洞WordPress 4.7 / 4.7.1:REST API 內(nèi)容注入漏洞
Drupal Module RESTWS 7.x:Remote PHP Code Execution
SugarCRM 6.5.23:REST PHP Object Injection Exploit
Apache Struts:REST Plugin With Dynamic Method Invocation Remote Code Execution
Oracle GlassFish Server:REST CSRF
QQ Browser 9.6:API 權(quán)限控制問(wèn)題導(dǎo)致泄露隱私模式
Hacking Docker:Registry API 未授權(quán)訪問(wèn)
后續(xù)更多博客,查看 https://github.com/senntyou/blogs
作者:深予之 (@senntyou)
版權(quán)聲明:自由轉(zhuǎn)載-非商用-非衍生-保持署名(創(chuàng)意共享3.0許可證)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/101364.html
摘要:應(yīng)用常見安全漏洞一覽注入注入就是通過(guò)給應(yīng)用接口傳入一些特殊字符,達(dá)到欺騙服務(wù)器執(zhí)行惡意的命令。此外,適當(dāng)?shù)臋?quán)限控制不曝露必要的安全信息和日志也有助于預(yù)防注入漏洞。 web 應(yīng)用常見安全漏洞一覽 1. SQL 注入 SQL 注入就是通過(guò)給 web 應(yīng)用接口傳入一些特殊字符,達(dá)到欺騙服務(wù)器執(zhí)行惡意的 SQL 命令。 SQL 注入漏洞屬于后端的范疇,但前端也可做體驗(yàn)上的優(yōu)化。 原因 當(dāng)使用外...
摘要:為了適應(yīng)流式渲染技術(shù)對(duì)網(wǎng)絡(luò)高吞吐零緩沖的特點(diǎn),可能需要對(duì)現(xiàn)有網(wǎng)絡(luò)協(xié)議進(jìn)行改造主要針對(duì)。視頻基于的,視頻在客戶端的播放會(huì)相對(duì)較為容易。輸入信號(hào)各自隔離處理即可,瀏覽器端對(duì)常見的輸入信號(hào)幾乎都有支持。 本文首發(fā)于我的博客(點(diǎn)此查看),歡迎關(guān)注。 流式渲染技術(shù),不同于傳統(tǒng)意義上前端領(lǐng)域的服務(wù)端渲染(即 SSR),指的是云端性能強(qiáng)勁的機(jī)器進(jìn)行畫面渲染,將渲染完成的數(shù)據(jù)傳送至客戶端,客戶端只負(fù)責(zé)...
摘要:的面向的異常遵從通用的異常層次結(jié)構(gòu)。比如以前常用的框架,現(xiàn)在常用的框架包含許多項(xiàng)目,下面挑一些最常用的出來(lái)總結(jié)一下。狀態(tài)是流程中事件發(fā)生的地點(diǎn),在流程中通過(guò)轉(zhuǎn)移的方式從一個(gè)狀態(tài)到另一個(gè)狀態(tài),流程的當(dāng)前狀況稱為流程數(shù)據(jù)。 如今做Java尤其是web幾乎是避免不了和Spring打交道了,但是Spring是這樣的大而全,新鮮名詞不斷產(chǎn)生,學(xué)起來(lái)給人一種凌亂的感覺(jué),我就在這里總結(jié)一下,理順頭緒...
摘要:番茄工作法簡(jiǎn)約而不簡(jiǎn)單,本書亦然。在番茄工作法一個(gè)個(gè)短短的分鐘內(nèi),你收獲的不僅僅是效率,還會(huì)有意想不到的成就感。 @author ASCE1885的 Github 簡(jiǎn)書 微博 CSDN 知乎本文由于潛在的商業(yè)目的,不開放全文轉(zhuǎn)載許可,謝謝! showImg(/img/remote/1460000007319503?w=728&h=792); 廣而告之時(shí)間:我的新書《Android 高...
閱讀 832·2021-11-22 11:59
閱讀 3247·2021-11-17 09:33
閱讀 2318·2021-09-29 09:34
閱讀 1948·2021-09-22 15:25
閱讀 1966·2019-08-30 15:55
閱讀 1327·2019-08-30 15:55
閱讀 539·2019-08-30 15:53
閱讀 3353·2019-08-29 13:55