值得注意的安全開發(fā)知識總結

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)成為站點的標配了。原理也很簡單我纪,因為表單的提交都要分為兩個階段慎宾,表單渲染和表單提交。檢查表單提交的表單是否是自己的服務器渲染的即可浅悉。


image.png
Ajax請求CRSF攻擊防御

頒發(fā)一個令牌token趟据,放在嚴格遵循同源策略的媒介上來識別請求是否可信。


image.png

解決方案

棄用cookie機制术健,薦用方案JSON Web Token

SQL注入

攻擊原理

利用現(xiàn)有應用程序汹碱,將(惡意的)SQL命令注入到后臺數(shù)據(jù)庫引擎執(zhí)行。通過在參數(shù)中輸入特殊符號荞估,來篡改并通過程序SQL語句的條件判斷咳促。

防御措施

被動防御

主流框架已基本可阻止sql注入稚新。

主動防御
  1. 通過使用靜態(tài)和動態(tài)測試,定期檢查并發(fā)現(xiàn)應用程序中的SQL注入漏洞跪腹。
  2. 通過使用參數(shù)化查詢和對象關系映射(Object Relational * Mappers褂删,ORM),來避免和修復注入漏洞冲茸。此類查詢通過指定參數(shù)的占位符屯阀,以便數(shù)據(jù)庫始終將它們視為數(shù)據(jù),而非SQL命令的一部分轴术。
  3. 使用轉(zhuǎn)義字符难衰,來修復SQL注入漏洞,以便忽略掉一些特殊字符膳音。
  4. 通過對數(shù)據(jù)庫強制執(zhí)行最小權限原則召衔,來減緩SQL注入漏洞的影響。籍此祭陷,應用程序的每一個軟件組件都只能訪問苍凛、并僅影響它所需要的資源。
  5. 對訪問數(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)義編碼參考:


image.png
出參進行編碼

如果源頭沒控制好膊存,就得后期補救了:像一些常見的符號,如<>在輸出的時候要對其進行轉(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í)行管理員用戶的權限享幽。

image.png

水平越權訪問

水平越權是指相同級別用戶之間的越權操作

image.png

解決方案

  1. 對平行越權漏洞防護中铲掐,增加訪問與操作對象的用戶屬性,在對目標對象進行訪問與操作時值桩,服務端校驗會話與對象的用戶屬性摆霉,在校驗通過后才能執(zhí)行讀取和操作。
    2.對垂直越權漏洞防護中奔坟,所有訪問采取默認拒絕機制携栋,采取基于角色訪問控制,對于各個功能的訪問咳秉,規(guī)定不同角色擁有不同的訪問權限婉支,當用戶在使用該功能時,系統(tǒng)要校對用戶的權限和訪問控制機制是否與規(guī)定相同澜建,通過校對者才能使用向挖,否則拒絕使用該功能。

短信安全

短信攻擊常見于短信接口被惡意利用炕舵,導致業(yè)務無法正常訪問何之。

短信接口被刷的危害

  1. 過多的短信接口請求導致服務器負載增加,嚴重情況下導致服務器資源耗盡咽筋,無法響應請求溶推,影響用戶正常的訪問。
  2. 過多的短信接口發(fā)送晤硕,導致正常用戶無法使用短信驗證服務
  3. 過多的短信接口非法調(diào)用消耗短信包資源,從而直接導致運營成本增加庇忌。

通用防護措施

  1. 手機號碼邏輯檢測
    在手機號碼窗口增加號碼有效性檢測舞箍,防止惡意攻擊者使用無效或非法的號碼,從而在第一窗口屏蔽非手機號的亂碼等無效數(shù)字皆疹。
  2. 隨機校驗
    在注冊頁添加個隱藏的'input'疏橄,設置保存在session中的隨機驗證碼,發(fā)短信前驗證一下,保證發(fā)驗證碼短信請求是在業(yè)務頁面點擊捎迫。
  3. 增加友好的圖形驗證碼
    即當用戶進行“獲取動態(tài)短信” 操作前晃酒,彈出圖片驗證碼,要求用戶輸入驗證碼后窄绒,服務器端再發(fā)送動態(tài)短信到用戶手機上贝次,該方法可有效緩解短信轟炸問題。
    由于當前驗證碼在攻防對抗中逐步被成功自動化識別破解彰导,我們在選用安全的圖形驗證碼也需要滿足一定的防護要求蛔翅。
  4. 同號碼短信發(fā)送頻率限制
    采用限制重復發(fā)送動態(tài)短信的間隔時長, 即當單個用戶請求發(fā)送一次動態(tài)短信之后位谋,服務器端限制只有在一定時長之后(此處一般為60-120秒)山析,才能進行第二次動態(tài)短信請求。該功能可進一步保障用戶體驗掏父,并避免包含手工攻擊惡 意發(fā)送垃圾驗證短信笋轨。
    5. 不同號碼請求數(shù)量限制
    根據(jù)業(yè)務特點,針對不同手機號碼赊淑、不同訪問源IP訪問請求進行頻率限制爵政,防止高并發(fā)非法請求消耗更多的短信包和服務器性能,提高業(yè)務穩(wěn)定性膏燃。
  5. 場景流程限定
    將手機短信驗證和用戶名密碼設置分成兩個步驟茂卦,用戶在填寫和校驗有效的用戶名密碼后,下一步才進行手機短信驗證组哩,并且需要在獲取第一步成功的回執(zhí)之后才可進行校驗等龙。
  6. 啟用https協(xié)議
    為網(wǎng)站配置證書,啟用https加密協(xié)議伶贰,防止傳輸明文數(shù)據(jù)被分析蛛砰。
  7. 單IP請求限定
    使用了圖片驗證碼后,能防止攻擊者有效進行“動態(tài)短信”功能的自動化調(diào)用黍衙。但若攻擊者忽略圖片驗證碼驗證錯誤的情況泥畅,大量執(zhí)行請求會給服務器帶來額外負擔,影響業(yè)務使用琅翻。建議在服務器端限制單個 IP 在單位時間內(nèi)的請求次數(shù)位仁,一旦用戶請求次數(shù)(包括失敗請求次數(shù))超出設定的閾值,則暫停對該IP一段時間的請求方椎。

短信安全防護

針對同一用戶和同一IP短信發(fā)送頻率限制聂抢。

文件上傳安全

攻擊原理

一些web應用程序中允許上傳圖片,文本或者其他資源到指定的位置棠众。
文件上傳漏洞就是利用網(wǎng)頁代碼中的文件上傳路徑變量過濾不嚴將可執(zhí)行的文件上傳到一個到服務器中琳疏,再通過URL去訪問以執(zhí)行惡意代碼有决。

防御措施

  1. 文件上傳之前客戶端檢驗上傳文件的大小和類型是否合法,但是該方法可以通過禁用JavaScript的方式繞過空盼。
  2. 服務端通過檢查http包的Content-Type字段中的值來判斷上傳文件類型是否合法书幕。該方法可以抓包修改的方法繞過。
  3. 服務端檢測上傳文件的擴展名來判斷文件是否合法揽趾,服務端對文件重新命名台汇,且根據(jù)文件類型強制修改來源文件的后綴名。
  4. 設置保存上傳文件的目錄為不可執(zhí)行但骨。
  5. 在判斷文件類型時励七,可以結合使用MIME Type、后綴檢查等方式奔缠。在文件類型檢查中掠抬,強烈建議采用白名單的方式。此外校哎,對于圖片的處理可以使用壓縮函數(shù)或者resize函數(shù)两波,在處理圖片的同時破壞圖片中可能包含的惡意代碼。
  6. 文件服務器使用獨立的域名闷哆。
  7. 使用第三方對象存儲服務腰奋。

完結。
不足之處抱怔,敬請指正劣坊。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市屈留,隨后出現(xiàn)的幾起案子局冰,更是在濱河造成了極大的恐慌,老刑警劉巖灌危,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件康二,死亡現(xiàn)場離奇詭異,居然都是意外死亡勇蝙,警方通過查閱死者的電腦和手機沫勿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來味混,“玉大人产雹,你說我怎么就攤上這事∥涛” “怎么了蔓挖?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盗誊。 經(jīng)常有香客問我时甚,道長,這世上最難降的妖魔是什么哈踱? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任荒适,我火速辦了婚禮,結果婚禮上开镣,老公的妹妹穿的比我還像新娘刀诬。我一直安慰自己,他們只是感情好邪财,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布陕壹。 她就那樣靜靜地躺著,像睡著了一般树埠。 火紅的嫁衣襯著肌膚如雪糠馆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天怎憋,我揣著相機與錄音又碌,去河邊找鬼。 笑死绊袋,一個胖子當著我的面吹牛毕匀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播癌别,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼皂岔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了展姐?” 一聲冷哼從身側響起躁垛,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诞仓,沒想到半個月后缤苫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡墅拭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年活玲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谍婉。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡舒憾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出穗熬,到底是詐尸還是另有隱情镀迂,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布唤蔗,位于F島的核電站探遵,受9級特大地震影響窟赏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜箱季,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一涯穷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧藏雏,春花似錦拷况、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至奏寨,卻和暖如春起意,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背病瞳。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工杜恰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仍源。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像逗爹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子袍睡,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

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

  • Getting Started Burp Suite 是用于攻擊web 應用程序的集成平臺止潘。它包含了許多工具凭戴,并為...
    Eva_chenx閱讀 28,683評論 0 14
  • 學習完整課程請移步 互聯(lián)網(wǎng) Java 全棧工程師 SQL 注入攻擊 SQL 注入攻擊者冤,這個是最常聊到的話題,使用過...
    擼帝閱讀 672評論 0 15
  • 作者:Gilberto Najera-Gutierrez譯者:飛龍協(xié)議:CC BY-NC-SA 4.0 簡介 這章...
    三月行者閱讀 1,891評論 2 7
  • 漏洞挖掘與利用 測試環(huán)境的搭建 引言 為什么要搭建本地測試環(huán)境?我想下面的東西能夠回答你的疑惑锯仪。 第二百八十五條 ...
    作業(yè)沒寫完閱讀 3,188評論 0 4
  • 雨.花.石 文/南坪人 1 一簾春雨久窟,織就輕柔的夢鄉(xiāng) 輕的不能再輕斥扛,不忍飄落 何須一柄油紙傘 落在心上,氤氳開一季...
    大彎山遺民閱讀 231評論 2 7