




已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
常見漏洞以及修復(fù)方法文:政府事業(yè)本部 第一事業(yè)部勞動人事開發(fā)部 劉世濤目錄(一)前言3(二)常見漏洞及原理分析31.sql腳本注入32.跨站點(diǎn)腳本編制33.不安全的HTTP方法及登錄驗(yàn)證相關(guān)44.跨站點(diǎn)請求偽造45.危險(xiǎn)性較低的開發(fā)及配置問題4(三)系統(tǒng)防御原理51.sql腳本注入52.跨站點(diǎn)腳本編制53.不安全的HTTP方法及登錄驗(yàn)證相關(guān)64.跨站點(diǎn)請求偽造65.危險(xiǎn)性較低的開發(fā)及配置問題6(四)結(jié)語7(一) 前言在做互聯(lián)網(wǎng)的項(xiàng)目中,由于網(wǎng)絡(luò)用戶數(shù)量大、環(huán)境更加復(fù)雜,對系統(tǒng)安全的考慮要更加慎重和全面。我在部門中參與了多個(gè)互聯(lián)網(wǎng)項(xiàng)目,以此為基礎(chǔ),并結(jié)合IBM AppScan安全工具,介紹一下我們遇到的幾個(gè)安全方面的問題及其原理和解決方案。我們的項(xiàng)目使用的技術(shù)主要包括:spring、spring MVC、freemarker、hibernate。本文主要站在軟件系統(tǒng)的構(gòu)建者和開發(fā)者的角度出發(fā),類似網(wǎng)絡(luò)環(huán)境、服務(wù)器配置等,可以參考其他資料。(二) 常見漏洞及原理分析1. sql腳本注入后臺執(zhí)行sql語句時(shí),使用字符串拼接的方式,并且該字符串是使用瀏覽器提交的數(shù)據(jù)時(shí)。攻擊者將提交的數(shù)據(jù)就行修改,可以達(dá)到執(zhí)行希望的sql的目的。該攻擊比較危險(xiǎn),可能會造成數(shù)據(jù)破壞和數(shù)據(jù)盜取的后果。例如:用戶提交username和password兩個(gè)字段,系統(tǒng)后臺判斷語句為String sql = “select * from user where name=”+username+” and password=”+password+”;后臺通過判斷查詢結(jié)果是否為空,來決定用戶的賬號和密碼是否正確。如果用戶將username的值寫為 admin or 1 or ,并且存在賬號名稱為admin的管理員用戶,則可以直接以admin登錄成功。以上例子只是很簡單的一種狀況,如果某些功能處理不好,有可能會造成大量數(shù)據(jù)被盜取的嚴(yán)重后果。2. 跨站點(diǎn)腳本編制攻擊者在瀏覽器向服務(wù)端提交的數(shù)據(jù)中,加入危險(xiǎn)的內(nèi)容,如js腳本等。如果服務(wù)器端沒有響應(yīng)的防御措施,則會被注入跨站腳本。典型的攻擊分為兩類:持久型:例如攻擊者在某博客內(nèi)留言,該留言內(nèi)容中嵌有一段獲取用戶賬號cookie的JS腳本。該博客被某個(gè)登錄用戶訪問時(shí),腳本會在用戶未知的情況下運(yùn)行,就會被盜取賬號等個(gè)人信息。非持久型:攻擊者在查詢的請求內(nèi),使用URL參數(shù)的方式添加html語法內(nèi)容和非法js腳本,并且將該URL發(fā)送給登錄用戶。登陸用戶點(diǎn)擊連接之后,腳本會在用戶未知的情況下運(yùn)行,就有可能被盜取賬號等個(gè)人信息。3. 不安全的HTTP方法及登錄驗(yàn)證相關(guān)針對現(xiàn)有的常見漏洞進(jìn)行解釋:1. 已解密的登錄請求、啟用了不安全的 HTTP 方法:如果沒有使用https協(xié)議,攻擊者可以在網(wǎng)絡(luò)層面對數(shù)據(jù)進(jìn)行攔截。針對登錄、注冊等功能,賬戶等主要信息會被法攔截。2. 不充分帳戶封鎖:攻擊者可能會使用窮舉法對密碼進(jìn)行暴力破解。3. 會話標(biāo)識未更新:用戶在未登錄和登錄后的sessionid沒有進(jìn)行更新,則攻擊者仿造一個(gè)帶有自定義的jsessionid參數(shù)的URL發(fā)送給被攻擊者,通常為登錄頁面,如果被攻擊者點(diǎn)擊鏈接之后,進(jìn)行了登錄操作,jsessionid未更新,并且攻擊者擁有這個(gè)jsessionid,則可以使用這個(gè)sessionid作為攻擊者自身的信息,進(jìn)入系統(tǒng)后,就擁有了被攻擊者的權(quán)限。4. 跨站點(diǎn)請求偽造在某個(gè)非法網(wǎng)站的頁面內(nèi)嵌入允許跨站點(diǎn)的標(biāo)簽,例如js、img標(biāo)簽。標(biāo)簽的src屬性為某個(gè)操作的請求,例如轉(zhuǎn)賬、授權(quán)等等。當(dāng)用戶在登錄被攻擊網(wǎng)站之后,如果訪問該非法頁面,則會自動向被攻擊網(wǎng)站發(fā)送一條請求,此時(shí)網(wǎng)站認(rèn)為該請求是用戶本人的操作,攻擊成功。5. 危險(xiǎn)性較低的開發(fā)及配置問題1. Bash Shell 歷史記錄文件檢索服務(wù)器配置2. Robots.txt 文件 Web 站點(diǎn)結(jié)構(gòu)暴露3. 會話 cookie 中缺少 HttpOnly 屬性會話cookie沒有HttpOnly屬性,則在瀏覽器端可以使用js等手段進(jìn)行修改4. 自動填寫未對密碼字段禁用的 HTML 屬性自動記錄密碼功能5. HTML 注釋敏感信息泄露注釋信息中含有某些關(guān)鍵字,如password等等6. 發(fā)現(xiàn)電子郵件地址模式注釋或代碼中存在郵件格式的信息,可能會有信息泄露7. 發(fā)現(xiàn)內(nèi)部 IP 泄露模式返回信息中,帶有內(nèi)部IP信息,可能會有信息泄露8. 客戶端(JavaScript)Cookie 引用瀏覽器端運(yùn)行的js文件對cookie進(jìn)行了引用,可能會被攻擊者利用。(三) 系統(tǒng)防御原理1. sql腳本注入要求所有的人員在開發(fā)過程中,杜絕食用字符串直接拼接sql語句的方式,而使用預(yù)編譯或命名參數(shù)的方式。例如:String sql = “select * from a where b=”+name+”; /name為瀏覽器請求的參數(shù)1. 預(yù)編譯的sql在jdbc中的體現(xiàn)為preparedstatement。查詢語句應(yīng)為:select * from a where b=? ,時(shí)候使用preparedstatement.setXXX的方法進(jìn)行變量設(shè)置。2. 命名參數(shù)在常用的orm框架中都有對應(yīng)的方法,以spring的jdbctemplate為例:String sql =” select * from a where b=:name”;jdbctemplate.query(sql, new Objectname, )3. 通常使用hibernate等orm框架,使用其對應(yīng)的java bean進(jìn)行增刪改查操作都是安全的。 現(xiàn)在處理漏洞方法:使用過濾器來過濾非法字符,解決該漏洞!但是在程序開發(fā)中,請不要使用直接拼接sql語句!過濾器代碼:2. 跨站點(diǎn)腳本編制該漏洞的核心原因是未針對用戶提交的數(shù)據(jù)中含有html語義的內(nèi)容進(jìn)行替換,從而造成用戶提交的數(shù)據(jù)可以被客戶端執(zhí)行造成的。解決辦法就是針對用戶提交的數(shù)據(jù)進(jìn)行處理,將其中的特殊字符替換為用于顯示的html實(shí)體。例如:小于號()替換為 <等等。如果你使用用于頁面展示的模板引擎,那恭喜你。這些模板引擎通常有自帶的處理方法,可以方便的將特殊子圖替換掉。如果沒有,那就需要自己進(jìn)行替換,建議使用正則表達(dá)式,方便效率。下面以我們項(xiàng)目為例,介紹我的處理方法。1. 數(shù)據(jù)庫層面:添加系統(tǒng)級配置管理模塊,對系統(tǒng)庫表和字段進(jìn)行配置。針對需要進(jìn)行替換的數(shù)據(jù)庫表和字段,在管理模塊內(nèi)配置為需要替換。系統(tǒng)會在該字段被修改和保存時(shí),通過hibernate攔截器。對數(shù)據(jù)內(nèi)的html語義字符替換為html實(shí)體,如小于號()等。該操作可以防御危險(xiǎn)性較高的持久型跨站點(diǎn)腳本攻擊。2. 頁面顯示層:添加系統(tǒng)級配置管理模塊,對用戶請求頁面進(jìn)行配置。針對需要進(jìn)行替換的頁面,將頁面動態(tài)顯示內(nèi)容(freemarker變量內(nèi)容,例如動態(tài)顯示的用戶名稱、展示數(shù)據(jù)等)進(jìn)行替換,對數(shù)據(jù)內(nèi)的html語義字符替換為html實(shí)體。該操作可以防御所有的跨站點(diǎn)腳本攻擊。例如:攻擊者使用偽造請求數(shù)據(jù)的方法,提交了非法的js腳本,該請求數(shù)據(jù)在freemarker渲染頁面時(shí),作為語句開發(fā)的 會被替換為 script 該內(nèi)容只會被作為普通文本進(jìn)行解釋,而不會被瀏覽器作為腳本解釋。附:freemarker內(nèi)置處理方法:使用自定義TemplateLoader,在每個(gè)頁面載入時(shí)添加一行代碼這樣,所有的動態(tài)變量中的特殊字符都會被html實(shí)體替換。velocity也有類似的方法進(jìn)行全局設(shè)置。現(xiàn)在處理漏洞方法:使用過濾器來過濾非法字符,解決該漏洞!3. 不安全的HTTP方法及登錄驗(yàn)證相關(guān)1. 已解密的登錄請求、啟用了不安全的 HTTP 方法:根據(jù)用戶的安全要求進(jìn)行配置,根據(jù)項(xiàng)目情況安排2. 不充分帳戶封鎖:通常為進(jìn)行測試,系統(tǒng)去掉了原有的驗(yàn)證碼,出現(xiàn)了此漏洞。針對重要的請求,可以使用驗(yàn)證碼,可以有效的防止暴力破解。根據(jù)用戶的安全要求,可以增加對登錄次數(shù)的限制。例如:如果連續(xù)登錄失敗10次,則一天之內(nèi)不允許再登錄。3. 會話標(biāo)識未更新:用戶每次登陸成功之后,對用戶的相關(guān)標(biāo)識進(jìn)行更新。例如cookieid、jsessionid等。這樣,攻擊者無法獲取正確的會話標(biāo)識。4. 跨站點(diǎn)請求偽造該漏洞屬于中級漏洞,常見網(wǎng)站往往不會進(jìn)行處理。但是對于安全性要求較高的內(nèi)容,例如設(shè)計(jì)轉(zhuǎn)賬、重要的權(quán)限等,需要進(jìn)行處理。防御方法:1. 針對安全要求高的請求,判斷請求的來源,對于來源非本站的請求進(jìn)行處理。即request.getHeader(refer);判斷來源頁面是否是本站內(nèi)部的頁面??梢苑烙唵蔚目缯军c(diǎn)請求偽造。但是,使用http客戶端軟件或者js腳本可以修改Header中的refer屬性,就要使用下面的方法了。2. 在系統(tǒng)內(nèi)設(shè)計(jì)一個(gè)算法,在生成請求頁面時(shí),生成一個(gè)不規(guī)則的隨機(jī)碼。之后在用戶點(diǎn)擊這個(gè)頁面內(nèi)請求時(shí),附帶這個(gè)隨機(jī)碼。之后再系統(tǒng)端對提交的隨機(jī)碼和下方的隨機(jī)碼進(jìn)行比對,如果不符合,則說明該請求時(shí)偽造的?,F(xiàn)在處理漏洞方法:使用過濾器來判斷request.getHeader(refer)是否是指定ip或者域名,解決該漏洞!5. 危險(xiǎn)性較低的開發(fā)及配置問題1. Bash Shell 歷史記錄文件檢索修改服務(wù)器配置2. Robots.txt 文件 Web 站點(diǎn)結(jié)構(gòu)暴露3.系統(tǒng)內(nèi)含有用于seo的robots.txt文件。但是robots文件只是一個(gè)聲明類的文件,并不能增加站內(nèi)敏感內(nèi)容的安全性。相反的是,如果在robots內(nèi)添加了敏感內(nèi)容結(jié)構(gòu)的聲明,會將站點(diǎn)結(jié)構(gòu)暴露給攻擊者。所以,使用robots文件要小心,該文件只是起到“防君子不防小人”的目的。例如之前某不良公司違反robots協(xié)議,造成用戶信息泄露的問題。4. 會話 cookie 中缺少 HttpOnly 屬性開發(fā)時(shí)針對cookie操作,添加httponly屬性,由于該方法屬于servlet3.0規(guī)范,根據(jù)項(xiàng)目要求配置。5. 自動填寫未對密碼字段禁用的 HTML 屬性開發(fā)時(shí),針對password文本框添加autocomplete=off的屬性6. HTML 注釋敏感信息泄露要求開發(fā)中,避免在注釋內(nèi)出現(xiàn)危險(xiǎn)的詞匯信息。但是有時(shí)使用的開源組件內(nèi)部會有此問題,需要衡量。7. 發(fā)現(xiàn)電子郵件地址模式要求開發(fā)中,避免出現(xiàn)危險(xiǎn)的email信息。但是有時(shí)使用的開源組件內(nèi)部會有此問題,需要衡量。8. 發(fā)現(xiàn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 夫妻共同債務(wù)分擔(dān)與忠誠協(xié)議效力鑒定合同
- XX縣先進(jìn)性動鞏固擴(kuò)大整改成果和“回頭看”工作向中央督導(dǎo)組的匯報(bào)
- 魚塘買賣合同協(xié)議書
- 餐廳合作入股協(xié)議書
- 韓式餐具轉(zhuǎn)讓協(xié)議書
- 餐廳勞務(wù)合同協(xié)議書
- 做生意租房合同協(xié)議書
- 轉(zhuǎn)租合同解除協(xié)議書
- 裝修外包施工協(xié)議書
- 配偶父母分家協(xié)議書
- 養(yǎng)老護(hù)理員培訓(xùn)課程內(nèi)容(范本)
- 大模型原理與技術(shù)-課件 chap10 多模態(tài)大模型
- 工地司機(jī)安全培訓(xùn)
- 高教版2023年中職教科書《語文》(基礎(chǔ)模塊)下冊教案全冊
- 義務(wù)教育版(2024)四年級全一冊-第三單元第11課-嘀嘀嗒嗒的秘密-教案
- 《采氣樹基礎(chǔ)知識》課件
- 北交所開戶測試題20題
- 學(xué)校安全風(fēng)險(xiǎn)分級管控清單
- 2024年安徽省中考物理試卷真題(含答案解析)+2023年中考物理試卷及答案
- 青年興則國家興青年強(qiáng)則國家強(qiáng)
- 藥物分析智慧樹知到答案2024年中國藥科大學(xué)
評論
0/150
提交評論