CSRF/XSRF(跨站請求偽造)
攻擊者通過跨站請求对扶,以合法的用戶身份進行非法操作
攻擊原理
1.主要歸結于瀏覽器同源策略限制級別的問題袁辈。
2.對于Cookie菜谣,DOM和XMLHttpRequest(ajax)所有瀏覽器都會嚴格遵守同源策略。但是也有例外晚缩,如'img'標簽尾膊,"script"標簽,"iframe"標簽等的鏈接會自動加載荞彼,更重要的是冈敛,表單提交也是可以跨域。
正是因為這些html標簽和表單提交的可以跨域問題鸣皂,一些黑產(chǎn)在惡意站點設置了在用戶不感知的情況下發(fā)起其他站點的請求莺债,比如用戶登錄了某支付網(wǎng)站后,不經(jīng)意點開了某惡意站點签夭,該站點自動請求某支付網(wǎng)站(瀏覽器會匹配domain和path自動帶上了cookie憑證),此時就相當于黑產(chǎn)拿到用戶的身份憑證了椎侠。
防御措施
表單提交請求CRSF攻擊防御
因為表單提交是可以跨域的第租,所以表單提交的CRSF防御已經(jīng)成為站點的標配了。原理也很簡單我纪,因為表單的提交都要分為兩個階段慎宾,表單渲染和表單提交。檢查表單提交的表單是否是自己的服務器渲染的即可浅悉。
Ajax請求CRSF攻擊防御
頒發(fā)一個令牌token趟据,放在嚴格遵循同源策略的媒介上來識別請求是否可信。
解決方案
棄用cookie機制术健,薦用方案JSON Web Token
SQL注入
攻擊原理
利用現(xiàn)有應用程序汹碱,將(惡意的)SQL命令注入到后臺數(shù)據(jù)庫引擎執(zhí)行。通過在參數(shù)中輸入特殊符號荞估,來篡改并通過程序SQL語句的條件判斷咳促。
防御措施
被動防御
主流框架已基本可阻止sql注入稚新。
主動防御
- 通過使用靜態(tài)和動態(tài)測試,定期檢查并發(fā)現(xiàn)應用程序中的SQL注入漏洞跪腹。
- 通過使用參數(shù)化查詢和對象關系映射(Object Relational * Mappers褂删,ORM),來避免和修復注入漏洞冲茸。此類查詢通過指定參數(shù)的占位符屯阀,以便數(shù)據(jù)庫始終將它們視為數(shù)據(jù),而非SQL命令的一部分轴术。
- 使用轉(zhuǎn)義字符难衰,來修復SQL注入漏洞,以便忽略掉一些特殊字符膳音。
- 通過對數(shù)據(jù)庫強制執(zhí)行最小權限原則召衔,來減緩SQL注入漏洞的影響。籍此祭陷,應用程序的每一個軟件組件都只能訪問苍凛、并僅影響它所需要的資源。
- 對訪問數(shù)據(jù)庫的Web應用程序采用Web應用防火墻(Web Application Firewall兵志,WAF)醇蝴。這有助于識別出針對SQL注入的各種嘗試,進而防止此類嘗試作用到應用程序上想罕。
解決方案
使用更加安全的開發(fā)框架,提高開發(fā)者安全編碼意識悠栓。
XSS(Cross-Site Scripting,跨站腳本攻擊)
攻擊原理
惡意代碼未經(jīng)過濾,與網(wǎng)站的正常代碼混在一起按价,瀏覽器無法分辨哪些腳本是可信的惭适,導致惡意腳本被執(zhí)行。由于直接在用戶的終端代碼執(zhí)行楼镐,惡意代碼能夠直接獲取用戶的信息癞志,利用這些信息冒充用戶向網(wǎng)站發(fā)起攻擊請求。
防御措施
入?yún)⒆址^濾框产。
在源頭控制凄杯,把輸入的一些不合法的東西都過濾掉,從而保證安全性秉宿。如移除用戶提交的的DOM屬性如onerror戒突,移除用戶上傳的Style節(jié)點,'iframe', 'script'描睦,'a'節(jié)點等
HTML轉(zhuǎn)義處理
轉(zhuǎn)義編碼參考:
出參進行編碼
如果源頭沒控制好膊存,就得后期補救了:像一些常見的符號,如<>在輸出的時候要對其進行轉(zhuǎn)換編碼,這樣做瀏覽器是不會對該標簽進行解釋執(zhí)行的膝舅,同時也不影響顯示效果嗡载。例如:對<>做編碼如:"<"用:"<",">"用:">"來代替。
public function processVal($value = null, $type = self::VAL_STRING)
{
if ($value !== null)
switch ($type) {
case self::VAL_STRING:
$value = Html::encode($value);
break;
case self::VAL_INT:
$value = intval($value);
break;
case self::VAL_TEXT:
$value = HtmlPurifier::process($value);
break;
case self::VAL_FLOAT:
$value = floatval($value);
break;
default:
break;
}
}
return $value;
}
越權
越權訪問(Broken Access Control仍稀,簡稱BAC)是Web應用程序中一種常見的漏洞洼滚,由于其存在范圍廣、危害大技潘,被OWASP列為Web應用十大安全隱患的第二名遥巴。
越權訪問分類
垂直越權訪問(權限提升攻擊)
垂直越權是指不同用戶級別之間的越權,如普通用戶執(zhí)行管理員用戶的權限享幽。
水平越權訪問
水平越權是指相同級別用戶之間的越權操作
解決方案
- 對平行越權漏洞防護中铲掐,增加訪問與操作對象的用戶屬性,在對目標對象進行訪問與操作時值桩,服務端校驗會話與對象的用戶屬性摆霉,在校驗通過后才能執(zhí)行讀取和操作。
2.對垂直越權漏洞防護中奔坟,所有訪問采取默認拒絕機制携栋,采取基于角色訪問控制,對于各個功能的訪問咳秉,規(guī)定不同角色擁有不同的訪問權限婉支,當用戶在使用該功能時,系統(tǒng)要校對用戶的權限和訪問控制機制是否與規(guī)定相同澜建,通過校對者才能使用向挖,否則拒絕使用該功能。
短信安全
短信攻擊常見于短信接口被惡意利用炕舵,導致業(yè)務無法正常訪問何之。
短信接口被刷的危害
- 過多的短信接口請求導致服務器負載增加,嚴重情況下導致服務器資源耗盡咽筋,無法響應請求溶推,影響用戶正常的訪問。
- 過多的短信接口發(fā)送晤硕,導致正常用戶無法使用短信驗證服務
- 過多的短信接口非法調(diào)用消耗短信包資源,從而直接導致運營成本增加庇忌。
通用防護措施
- 手機號碼邏輯檢測
在手機號碼窗口增加號碼有效性檢測舞箍,防止惡意攻擊者使用無效或非法的號碼,從而在第一窗口屏蔽非手機號的亂碼等無效數(shù)字皆疹。 - 隨機校驗
在注冊頁添加個隱藏的'input'疏橄,設置保存在session中的隨機驗證碼,發(fā)短信前驗證一下,保證發(fā)驗證碼短信請求是在業(yè)務頁面點擊捎迫。 - 增加友好的圖形驗證碼
即當用戶進行“獲取動態(tài)短信” 操作前晃酒,彈出圖片驗證碼,要求用戶輸入驗證碼后窄绒,服務器端再發(fā)送動態(tài)短信到用戶手機上贝次,該方法可有效緩解短信轟炸問題。
由于當前驗證碼在攻防對抗中逐步被成功自動化識別破解彰导,我們在選用安全的圖形驗證碼也需要滿足一定的防護要求蛔翅。 - 同號碼短信發(fā)送頻率限制
采用限制重復發(fā)送動態(tài)短信的間隔時長, 即當單個用戶請求發(fā)送一次動態(tài)短信之后位谋,服務器端限制只有在一定時長之后(此處一般為60-120秒)山析,才能進行第二次動態(tài)短信請求。該功能可進一步保障用戶體驗掏父,并避免包含手工攻擊惡 意發(fā)送垃圾驗證短信笋轨。
5. 不同號碼請求數(shù)量限制
根據(jù)業(yè)務特點,針對不同手機號碼赊淑、不同訪問源IP訪問請求進行頻率限制爵政,防止高并發(fā)非法請求消耗更多的短信包和服務器性能,提高業(yè)務穩(wěn)定性膏燃。 - 場景流程限定
將手機短信驗證和用戶名密碼設置分成兩個步驟茂卦,用戶在填寫和校驗有效的用戶名密碼后,下一步才進行手機短信驗證组哩,并且需要在獲取第一步成功的回執(zhí)之后才可進行校驗等龙。 - 啟用https協(xié)議
為網(wǎng)站配置證書,啟用https加密協(xié)議伶贰,防止傳輸明文數(shù)據(jù)被分析蛛砰。 - 單IP請求限定
使用了圖片驗證碼后,能防止攻擊者有效進行“動態(tài)短信”功能的自動化調(diào)用黍衙。但若攻擊者忽略圖片驗證碼驗證錯誤的情況泥畅,大量執(zhí)行請求會給服務器帶來額外負擔,影響業(yè)務使用琅翻。建議在服務器端限制單個 IP 在單位時間內(nèi)的請求次數(shù)位仁,一旦用戶請求次數(shù)(包括失敗請求次數(shù))超出設定的閾值,則暫停對該IP一段時間的請求方椎。
短信安全防護
針對同一用戶和同一IP短信發(fā)送頻率限制聂抢。
文件上傳安全
攻擊原理
一些web應用程序中允許上傳圖片,文本或者其他資源到指定的位置棠众。
文件上傳漏洞就是利用網(wǎng)頁代碼中的文件上傳路徑變量過濾不嚴將可執(zhí)行的文件上傳到一個到服務器中琳疏,再通過URL去訪問以執(zhí)行惡意代碼有决。
防御措施
- 文件上傳之前客戶端檢驗上傳文件的大小和類型是否合法,但是該方法可以通過禁用JavaScript的方式繞過空盼。
- 服務端通過檢查http包的Content-Type字段中的值來判斷上傳文件類型是否合法书幕。該方法可以抓包修改的方法繞過。
- 服務端檢測上傳文件的擴展名來判斷文件是否合法揽趾,服務端對文件重新命名台汇,且根據(jù)文件類型強制修改來源文件的后綴名。
- 設置保存上傳文件的目錄為不可執(zhí)行但骨。
- 在判斷文件類型時励七,可以結合使用MIME Type、后綴檢查等方式奔缠。在文件類型檢查中掠抬,強烈建議采用白名單的方式。此外校哎,對于圖片的處理可以使用壓縮函數(shù)或者resize函數(shù)两波,在處理圖片的同時破壞圖片中可能包含的惡意代碼。
- 文件服務器使用獨立的域名闷哆。
- 使用第三方對象存儲服務腰奋。
完結。
不足之處抱怔,敬請指正劣坊。