原文鏈接:http://blog.csdn.net/qq_22329521/article/details/76128654
SQL注入
盲注
Web服務(wù)器關(guān)閉了錯(cuò)誤回顯苛秕,對(duì)于攻擊者就缺少了重要的調(diào)試信息古劲,所以攻擊者知道一個(gè)方法來(lái)驗(yàn)證SQL語(yǔ)句是否執(zhí)行
比如
http://xxxx.com/items.php?id=2
構(gòu)造
http://xxxx.com/items.php?id=2 and 1=2
如果頁(yè)面是空的,或者出差假夺,可以猜測(cè)這可能存在注入的機(jī)會(huì)
再次修改
http://xxxx.com/items.php?id=2 and 1=1
如果正常返回,就可以判斷注入成功
BENCHMARK函數(shù)
BENCHMARK函數(shù)用來(lái)測(cè)試函數(shù)性能
BENCHMARK(10000000,ENCODE('msg','by 5 seconds'))
將encode(xxx,xxx)執(zhí)行xxxx次數(shù)
利用BENCHMARK函數(shù),可以讓同一個(gè)行數(shù)執(zhí)行若干次暇检,使得結(jié)果返回的時(shí)間比平時(shí)長(zhǎng)款熬,通過(guò)時(shí)間長(zhǎng)度變化深寥,可以判斷注入語(yǔ)句是否執(zhí)行成功
下面有具體的sql實(shí)例
http://blog.csdn.net/emaste_r/article/details/8156108
防御sql注入
- 預(yù)編譯語(yǔ)句,綁定變量
- 使用存儲(chǔ)過(guò)程贤牛,調(diào)用存在數(shù)據(jù)庫(kù)里的函數(shù)
- 檢查數(shù)據(jù)類型惋鹅,如果輸入是數(shù)字,就用integer做檢驗(yàn)殉簸,如果是郵箱則正則表達(dá)式去做校驗(yàn)等
- 使用定義好的安全函數(shù)來(lái)轉(zhuǎn)義闰集。
- 設(shè)置數(shù)據(jù)庫(kù)用戶的最小權(quán)限沽讹。
文件上傳漏洞
文件上傳后導(dǎo)致的常見(jiàn)安全問(wèn)題一般有:
- 上傳文件是Web腳本語(yǔ)言,服務(wù)器的Web容器解釋并執(zhí)行用戶上傳的腳本返十,導(dǎo)致代碼執(zhí)行
- 上傳文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在該域下的行為(其他通過(guò)類似行為控制策略文件的情況類似)
- 上傳文件是病毒妥泉,木馬文件,用以誘惑用戶或者管理員下載執(zhí)行
- 上傳文件是釣魚(yú)圖片或?yàn)榘_本的圖片洞坑,在某些版本瀏覽器中會(huì)被作為腳本執(zhí)行盲链,被用于釣魚(yú)和欺詐
設(shè)計(jì)安全的文件上傳功能
- 文件上傳的目錄設(shè)置為不可執(zhí)行:只要Web容器無(wú)法解析該目錄下的文件,即使上傳了腳本文件也不收影響
- 判斷文件類型:可以結(jié)合MIME Type,后綴檢查等方式迟杂。
- 使用隨機(jī)數(shù)改寫(xiě)文件名和文件路徑:只要修改路徑刽沾,上傳的文件查找的不容易
- 單獨(dú)設(shè)置文件服務(wù)器的域名:同源策略的關(guān)系,一系列客戶端攻擊將生效
用戶信息管理
密碼強(qiáng)度
- 普通應(yīng)用要求長(zhǎng)度為6位以上
- 重要應(yīng)用要求長(zhǎng)度為8位以上排拷,并考慮雙因素認(rèn)證
- 密碼區(qū)分大小寫(xiě)字母
- 密碼為大寫(xiě)字母侧漓,小寫(xiě)字幕、數(shù)字监氢、特殊符號(hào)中兩種以上的組合
- 不要有連續(xù)性的字符
- 盡量避免出現(xiàn)重復(fù)的字符
- 密碼保存:必須以不可逆的加密算法布蔗,或者是單向散列函數(shù)算法,加密后存儲(chǔ)在數(shù)據(jù)庫(kù)中
- 在計(jì)算密碼明文的時(shí)候加一個(gè)salt MD5(salt+password),避免password 單一容易被彩虹表收集到
Session注意點(diǎn)
- Seesion在登陸完成后浪腐,重寫(xiě)SessionId纵揍,避免SessionFixation攻擊
- 服務(wù)器設(shè)置固定時(shí)間強(qiáng)制銷毀Session,因?yàn)榭蛻舳丝梢孕薷挠脩舻拇婊顣r(shí)間议街,定時(shí)拿seesionId去請(qǐng)求泽谨。
- 降低SSO的風(fēng)險(xiǎn),在一些敏感的系統(tǒng)特漩,在單獨(dú)實(shí)現(xiàn)額外的認(rèn)證機(jī)制吧雹。
訪問(wèn)控制
- 垂直權(quán)限管理:現(xiàn)在應(yīng)用廣泛的一種方法是基于角色的范圍控制:RBAC,Java中的Spring Security 權(quán)限管理涂身,就是RBAC模型的一個(gè)實(shí)現(xiàn)
- 水平權(quán)限管理雄卷,RBAC只能驗(yàn)證用戶A屬于角色RoleX,但不會(huì)判斷用戶A是否能訪問(wèn)只屬于用戶B的數(shù)據(jù)B,發(fā)生了越權(quán)訪問(wèn)蛤售,這種問(wèn)題一般是具體問(wèn)題具體解決龙亲,至今仍是一個(gè)難題,它難以發(fā)現(xiàn)
- 設(shè)計(jì)方案時(shí)悍抑,都應(yīng)該滿足“最小權(quán)限原則"
加密算法與隨機(jī)數(shù)
略鳄炉。。搜骡。
記下結(jié)論
- 不要使用ECB模式
- 不要使用流密碼(RC4)
- 使用HMAC-SHA1替代MD5(甚至是替代SHA1)
- 不要使用相同的key做不同的事情
- salts與IV需要隨機(jī)生成
- 不要自己實(shí)現(xiàn)加密算法拂盯,盡量使用安全專家已經(jīng)實(shí)現(xiàn)好的庫(kù)
- 不要依賴系統(tǒng)的保密性
- 使用CBC模式的AES256加密
- 使用HMAC-SHA512用于完整性檢查
- 使用帶salt的SHA-256或SHA-512用于Hash
DDOS
DDOS又稱為分布式拒絕服務(wù)利用合理的請(qǐng)求造成資源過(guò)載,導(dǎo)致服務(wù)不可用
SYN flood攻擊
- 客戶端向服務(wù)器端發(fā)送一個(gè)SYN包记靡,包含客戶單使用的端口號(hào)和初始序列號(hào)X
- 服務(wù)器端接受到客戶單發(fā)送的SYN包后谈竿,向客戶端發(fā)送一個(gè)SYN包和ACK都置位的TCP報(bào)文团驱,包含確認(rèn)號(hào)x+1和服務(wù)器端的初始序列號(hào)y
- 客戶端收到服務(wù)器端返回的SYN+ACK報(bào)文后,向服務(wù)器端返回一個(gè)確認(rèn)號(hào)為y+1空凸、序號(hào)為x+1的ACK報(bào)文嚎花,一個(gè)標(biāo)準(zhǔn)的TCP連接
SYN flood攻擊,首先偽造大量的源IP地址呀洲,分別向服務(wù)器端發(fā)送大量的SYN包紊选,此時(shí)服務(wù)器端會(huì)返回SYN/ACK包,因?yàn)樵吹刂肥莻卧斓牡蓝海詡卧斓腎P并不會(huì)應(yīng)答兵罢,服務(wù)器端沒(méi)有收到偽造IP的回應(yīng),會(huì)重試3-5次并且等待一個(gè)SYN Time(一般為30秒至2分鐘)滓窍,如果超時(shí)則丟棄連接卖词。攻擊者大量發(fā)送這種偽造源地址的SYN請(qǐng)求,服務(wù)器會(huì)消耗非常多的資源來(lái)處理這種半連接吏夯。
對(duì)抗SYN flood的主要策略有SYN Cookie/SYN Proxy,safereset等算法,SYN Cookie 主要思想是為每一個(gè)IP地址分配一個(gè) cookie此蜈,并統(tǒng)計(jì)每個(gè)ip地址的訪問(wèn)頻率,如果短時(shí)間收到大量的請(qǐng)求噪生,則丟棄這些ip地址的包
應(yīng)用層DDOS
由于發(fā)生在應(yīng)用層裆赵,tcp三次握手已經(jīng)完成,連接建立杠园,發(fā)起的ip都是真實(shí)的顾瞪,這種ddos逼網(wǎng)絡(luò)層ddos更可怕
CC攻擊
CC攻擊原理非常簡(jiǎn)單舔庶,就是對(duì)一些消耗資源較大的應(yīng)用頁(yè)面不斷發(fā)起正常的請(qǐng)求抛蚁,以達(dá)到消耗服務(wù)器資源的目的。在Web應(yīng)用中惕橙,查詢數(shù)據(jù)庫(kù)瞧甩,讀/寫(xiě)硬盤(pán)文件等操作,相對(duì)都會(huì)消耗成比較多的資源
應(yīng)用層的攻擊還可以通過(guò)一下方式:黑客入侵了一個(gè)流量大的網(wǎng)站后弥鹦,通過(guò)篡改頁(yè)面肚逸,將巨大的用戶流量分流到目標(biāo)網(wǎng)站
<iframe src="target" width=0,height=0/>
資源耗盡攻擊
Slowloris攻擊
其原理是以極低的速度往服務(wù)器發(fā)送HTTP請(qǐng)求。由于Web Server對(duì)于并發(fā)的連接數(shù)有一定的上限彬坏,因此若是惡意地占用住這些連接不釋放朦促。那么無(wú)法接收到正常的請(qǐng)求
實(shí)現(xiàn)是構(gòu)造一個(gè)畸形的HTTP請(qǐng)求
Content-Length:42\r\n\r\n
由于WebServer只收到一個(gè)\r\n,因此將認(rèn)為Http Headers部分沒(méi)有結(jié)束,并保持
優(yōu)化服務(wù)器性能的方式
- 將使用頻率高的數(shù)據(jù)放到memcache中栓始,將數(shù)據(jù)庫(kù)的壓力轉(zhuǎn)移到內(nèi)存中务冕,此外及時(shí)釋放資源
- 在針對(duì)每個(gè)客戶端做一個(gè)請(qǐng)求頻率的限制(但是如果對(duì)方使用代理服務(wù)器通過(guò)不斷變化IP地址,如果服務(wù)器對(duì)單個(gè)IP地址的請(qǐng)求就無(wú)效了)
- 在網(wǎng)絡(luò)架構(gòu)上做好優(yōu)化幻赚,善于利用負(fù)載均衡禀忆,避免用戶流量集中在單臺(tái)服務(wù)器上臊旭,同時(shí)可以充分利用好CDN和鏡像站點(diǎn)的分流作用,緩解主站的壓力
- 驗(yàn)證碼箩退,為了識(shí)別人與機(jī)器的交互
- 可以在Http頭中的User-Agent字段來(lái)識(shí)別客戶端离熏,讓客戶端解析一段JavaScript,并給出正確的運(yùn)行結(jié)果等
- 在WebServer做出一些處理戴涝,其好處在于請(qǐng)求尚未到達(dá)后端滋戳,在Apache的配置文件中,有一些參數(shù)可以緩解DDOS攻擊喊括,比如調(diào)小Timeout,KeepAliveTimeout值胧瓜,增加MaxClients的值
垃圾處理
如何防范垃圾注冊(cè)和垃圾消息,垃圾處理離不開(kāi)
兩個(gè)步驟:‘識(shí)別’和‘?dāng)r截’
"批量"和“自動(dòng)化”的特點(diǎn)意味著:
- 同一客戶端會(huì)多次請(qǐng)求同樣的URL地址
- 頁(yè)面與頁(yè)面直接的跳轉(zhuǎn)流程不支持
- 同意客戶端兩次請(qǐng)求時(shí)間短
- 客戶端的UserAgent看起來(lái)不像瀏覽器
- 客戶端可能無(wú)法解析JavaScript和Flash
- 在大多數(shù)情況下驗(yàn)證碼是有效的
如果在從垃圾注冊(cè)和垃圾消息的內(nèi)容分析郑什,發(fā)現(xiàn)的特點(diǎn)
- 注冊(cè)時(shí)填寫(xiě)的用戶名可能是隨機(jī)生成的字符串府喳,而非自然語(yǔ)言
- 不同賬號(hào)的資料可能出現(xiàn)同樣的內(nèi)容
- 可能含有一些敏感詞
- 可能出現(xiàn)文字變形,比如全角變半角
與業(yè)務(wù)結(jié)合蘑拯,更多的特征
- 如果某個(gè)用戶給多個(gè)用戶發(fā)送消息钝满,但是接受者不會(huì),這個(gè)人可能在發(fā)送消息
- 如果某個(gè)用戶加入IM群中申窘,發(fā)送的消息是相同的內(nèi)容弯蚜,不說(shuō)其他話,可能也是在發(fā)送垃圾消息
有了這些特征剃法,可以建立規(guī)則和模型
參考文章
白帽子講Web安全
http://www.bubuko.com/infodetail-1784365.html
http://blog.csdn.net/emaste_r/article/details/8156108