JavaWeb安全開發(fā)規(guī)范_第1頁(yè)
JavaWeb安全開發(fā)規(guī)范_第2頁(yè)
JavaWeb安全開發(fā)規(guī)范_第3頁(yè)
JavaWeb安全開發(fā)規(guī)范_第4頁(yè)
JavaWeb安全開發(fā)規(guī)范_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、?SoftStone廣州軟通動(dòng)力信息技術(shù)有限公司Java Web安全開發(fā)規(guī)范?SoftStone廣州軟通動(dòng)力信息技術(shù)有限公司?SoftStone廣州軟通動(dòng)力信息技術(shù)有限公司1.目的保障WEB應(yīng)用平臺(tái)的安全性,保證WEB應(yīng)用系統(tǒng)的可用性、完整性和保密性從安 全角度規(guī)范 WEB應(yīng)用系統(tǒng)開發(fā)人員, 能夠讓 WEB應(yīng)用開發(fā)者樹立很強(qiáng)的安全意識(shí),在開發(fā)過程中編寫安全代碼,進(jìn)行安全編程。2.范圍本規(guī)范從應(yīng)用安全開發(fā)角度出發(fā),給出WEB應(yīng)用系統(tǒng)安全開發(fā)的規(guī)范。供軟通動(dòng)力內(nèi)部使用,適用各個(gè) WEB應(yīng)用系統(tǒng)項(xiàng)目開發(fā)的工作。本規(guī)范定義了 WEB應(yīng)用系統(tǒng)安全開發(fā)和 WEB編碼安全相關(guān)的技術(shù)要求。3. 規(guī)范概述WEB

2、應(yīng)用系統(tǒng)為架構(gòu)設(shè)計(jì)人員、開發(fā)人員提出了一系列復(fù)雜的安全問題。最安全、最 有能力抵御攻擊的 Web應(yīng)用程序是那些應(yīng)用安全思想構(gòu)建的應(yīng)用程序。在設(shè)計(jì)初始階段,應(yīng)該使用可靠的安全體系結(jié)構(gòu)和設(shè)計(jì)方法,同時(shí)要結(jié)合考慮應(yīng)用程序的部署以及企業(yè)的安全策略。如果不能做到這一點(diǎn),將導(dǎo)致在現(xiàn)有基礎(chǔ)結(jié)構(gòu)上部署應(yīng)用程序 時(shí),要不可避免地危及網(wǎng)站系統(tǒng)的安全性。本規(guī)范提供初步的安全體系結(jié)構(gòu)和設(shè)計(jì)指南,并按照常見的應(yīng)用程序漏洞類別進(jìn)行組織。這些指南是WEB應(yīng)用程序安全的重要方面,并且是經(jīng)常發(fā)生錯(cuò)誤的領(lǐng)域。4. 安全編碼原則程序只實(shí)現(xiàn)你指定的功能永不要信任用戶輸入,對(duì)用戶輸入數(shù)據(jù)有效性檢查必須考慮意外情況并進(jìn)行處理 不要試圖在

3、發(fā)現(xiàn)錯(cuò)誤之后繼續(xù)執(zhí)行 盡可能使用安全函數(shù)進(jìn)行編程小心、認(rèn)真、細(xì)致地編程5. 軟件編碼安全5.1. 輸入校驗(yàn)Web應(yīng)用程序與用戶WEB應(yīng)用程序從各個(gè)方面獲取輸入,例如所有用戶發(fā)送的,或者 交互往返的數(shù)據(jù)(用戶提交的數(shù)據(jù), cookie信息,查詢字符串參數(shù)),以及后臺(tái)數(shù)據(jù)(數(shù)據(jù) 庫(kù)、配置文件、其他數(shù)據(jù)來源)。所有輸入的數(shù)據(jù)都會(huì)在某種情況下影響請(qǐng)求的處理。正確的輸入驗(yàn)證是防御目前應(yīng)用程序攻擊的最有效方法之一。正確的輸入驗(yàn)證是防止 XSS SQL注入、緩沖區(qū)溢出和其他輸入攻擊的有效對(duì)策。以下做法可以增強(qiáng) Web應(yīng)用程序的輸入驗(yàn)證:假定所有輸入都是惡意的開始輸入校驗(yàn)時(shí),首先假定所有輸入都是惡意的,除非有

4、證據(jù)表明它們并 無惡意,無論輸入是來自服務(wù)、 共享文件、用戶還是數(shù)據(jù)庫(kù), 只有其來源不在 可信任的范圍之內(nèi),就應(yīng)對(duì)輸入進(jìn)行驗(yàn)證。集中方法將輸入驗(yàn)證策略作為應(yīng)用程序的核心元素??紤]集中式驗(yàn)證方法,例如通過使用共享庫(kù)中的公共驗(yàn)證和篩選代碼。這確保驗(yàn)證規(guī)則應(yīng)用的一致性。 此外還能減少開發(fā)工作量,并且有助于以后的維護(hù)工作。不要依賴客戶端驗(yàn)證應(yīng)使用服務(wù)器端代碼執(zhí)行其自身的驗(yàn)證,如果攻擊者繞過客戶端或者禁用客戶端JavaScript腳本,后果如何?使用客戶端驗(yàn)證可以減少客戶端到服務(wù)器 端的往返次數(shù),但是不要依賴這種方法進(jìn)行安全驗(yàn)證。注意標(biāo)準(zhǔn)化問題數(shù)據(jù)的標(biāo)準(zhǔn)形式是最標(biāo)準(zhǔn)、最簡(jiǎn)單的形式。標(biāo)準(zhǔn)化是指將數(shù)據(jù)轉(zhuǎn)化為

5、標(biāo)準(zhǔn) 形式的過程。文件路徑和URL尤其傾向于標(biāo)準(zhǔn)化問題。例如 /www/public/testfile.jsp/www/public/./public/testfile.jsp/www/public/testfile.jsp%2fwww%2fpublic%2f%2f%2ftestfile.jsp都表示同一個(gè)文件。通常,應(yīng)設(shè)法避免讓應(yīng)用程序接受用戶輸入的文件名,以防止標(biāo)準(zhǔn)化問題。可以考慮其他方式,例如由應(yīng)用程序?yàn)橛脩舸_定文件名。 如果確實(shí)需要用戶輸 入文件名,在作出安全決策(如授予或拒絕特定文件的訪問權(quán)限)之前應(yīng)確保這些文件名具有嚴(yán)格定義的形式。限制輸入定義應(yīng)用程序字段可以接受的數(shù)據(jù)輸入,并強(qiáng)制

6、應(yīng)用該定義,拒絕一切有害數(shù)據(jù)。驗(yàn)證數(shù)據(jù)的類型、長(zhǎng)度、格式和范圍在適當(dāng)?shù)牡胤綄?duì)輸入數(shù)據(jù)使用強(qiáng)類型檢查,可以使用參數(shù)化的存儲(chǔ)過程來訪問數(shù)據(jù)。應(yīng)該檢查字符串字段的長(zhǎng)度,在許多情況下還應(yīng)檢查字符串的格式是否正確,例如郵政編碼、 手機(jī)號(hào)碼、身份證號(hào)碼等都具有明確定義的格式,可以使用常規(guī)表達(dá)式進(jìn)行驗(yàn)證。長(zhǎng)度檢查會(huì)加大攻擊者實(shí)施其所喜歡的攻擊方式的難 度。拒絕已知的有害輸入 例如查詢條件中禁止輸入or仁1等。凈化輸入凈化包括從刪除用戶輸入字符串后面的空格到去除值等一切行為。常見的凈化輸入示例是使用URL編碼或者HTML編碼來包裝數(shù)據(jù),并將其作為文本而不是可執(zhí)行腳本來處理。52輸出編碼輸出編碼是轉(zhuǎn)換輸入數(shù)據(jù)為

7、輸出格式的過程。輸出格式不包含或者只是有選擇性的包含允許的特殊字符。輸出的重量有:1)支持HTML代碼的輸出2)不支持HTML代碼的輸出3)URL的輸出4)頁(yè)面內(nèi)容的輸入5)Js腳本的輸出6)Style樣式的輸出7)Xml數(shù)據(jù)的輸出8)服務(wù)空間的輸出輸出編碼能有效的防止 HTML注入(跨站腳本 XSS攻擊)等,也能確保輸出內(nèi)容的完整 性和正確性。對(duì)于支持HTML代碼的輸出,輸出前要確保代碼中不含有跨站攻擊腳本才能輸出。通過編寫過濾函數(shù)來進(jìn)行強(qiáng)制過濾。對(duì)于不支持HTML代碼的輸出,在輸出到頁(yè)面前要進(jìn)行HTML編碼。對(duì)于URL的輸出要對(duì) URL進(jìn)行UrlEncode處理,要確保 URL編碼正確,不

8、允許 URL中 輸出引號(hào)。要確保內(nèi)容輸出中不包含特殊符號(hào)(單引號(hào)、雙引號(hào)、/、等)。5.3. SQL 注入所謂SQL注入就是通過把 SQL命令插入到Web表單提交到頁(yè)面的查詢字符串,最終達(dá) 到欺騙服務(wù)器執(zhí)行惡意的SQL命令。通過提交參數(shù)構(gòu)造巧妙的SQL語(yǔ)句,從而成功獲取想要的數(shù)據(jù)。SQL注入往往是應(yīng)用程序缺少對(duì)輸入進(jìn)行安全性檢查所引起的。在對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢與各類操作時(shí),SQL語(yǔ)句中的參數(shù)應(yīng)該以變量形式傳輸給服務(wù)器,不應(yīng)該直接將參數(shù)的值拼接到SQL語(yǔ)句的文本中。參數(shù)的類型包括所有的數(shù)據(jù)類型,而不僅是字符串類型。參數(shù)值的來源包括但不限于:用戶輸入的數(shù)據(jù)、從數(shù)據(jù)庫(kù)中讀取的數(shù)據(jù)、 從配置文件中讀取的數(shù)

9、據(jù)、從外部系統(tǒng)中獲取的數(shù)據(jù)、其他程序邏輯計(jì)算得出的數(shù)據(jù)等等。SQL語(yǔ)句的執(zhí)行位置包括但不限于:代碼中的SQL語(yǔ)句,數(shù)據(jù)庫(kù)的存儲(chǔ)過程、觸發(fā)器、定時(shí)器等。應(yīng)用程序在處理用戶非法請(qǐng)求觸發(fā)后臺(tái)應(yīng)用程序的SQL錯(cuò)誤時(shí),應(yīng)返回處理后的錯(cuò)誤頁(yè)面提示,禁止直接拋出數(shù)據(jù)庫(kù)SQL錯(cuò)誤,如出現(xiàn) ORA-xxxxxx等。5.4. 惡意文件執(zhí)行惡意文件執(zhí)行是一種能夠威脅任何網(wǎng)站形式的漏洞,只要攻擊者在具有引入功能程序的參數(shù)中修改參數(shù)內(nèi)容,WEB服務(wù)器便會(huì)引入惡意程序內(nèi)容從而受到惡意文件執(zhí)行漏洞攻擊。 攻擊者可以利用惡意文件執(zhí)行漏洞進(jìn)行攻擊取得WEB服務(wù)器控制權(quán),進(jìn)行不法利益或者獲取經(jīng)濟(jì)效益。解決方法:輸入驗(yàn)證,驗(yàn)證上傳

10、文件名;檢查上傳文件類型和文件大?。唤股蟼魑kU(xiǎn)的文件類型(如:.jsp ; .exe ; .sh ; .war ; .jar等),只接受指定類型的文件(如zip、圖片等)。5.5. 不安全的直接對(duì)象引用所謂“不安全的直接對(duì)象引用” 意指一個(gè)已經(jīng)授權(quán)的用戶, 通過修改訪問時(shí)的一個(gè)參數(shù), 從而訪問到原本其并沒有得到授權(quán)的對(duì)象。例如攻擊者發(fā)現(xiàn)他自己的參數(shù)是6065,即?acct=6065 ;他可以直接更改參數(shù)為6066,即?acct=6006 ;這樣他就可以直接看到 6066用戶的信息。解決方法:檢查訪問。來自不受信源所使用的所有直接對(duì)象引用都必須包含訪問控制檢 測(cè),這樣才能確保用戶對(duì)要求的對(duì)象有

11、訪問權(quán)限。5.6. 信息泄露和錯(cuò)誤處理不當(dāng)應(yīng)用程序常常產(chǎn)生錯(cuò)誤信息并顯示給使用者。很多時(shí)候錯(cuò)誤信息是非常有用的攻擊,因?yàn)樗鼈兘沂玖藢?shí)施細(xì)則或者有用的開發(fā)信息利用的漏洞。解決方法針對(duì)登陸嘗試的攻擊,可以使用相同的報(bào)錯(cuò)提醒,比如“輸入的用戶名或者密碼錯(cuò)誤”;通過配置web.xml指定異常時(shí)跳轉(zhuǎn)的頁(yè)面,禁止直接顯示異常信息堆棧。5.7. 限制URL訪問失效攻擊者通過偽造請(qǐng)求路徑直接訪問未授權(quán)的頁(yè)面。例如攻擊者發(fā)現(xiàn)自己的訪問頁(yè)面 /user/getAccounts ;他通過修改 URL的形式請(qǐng)求 /admin/getAccounts 或者 /manger/getAccounts 來訪問更多用戶信息。解

12、決方法:針對(duì)每個(gè)不公開的URL,必須限制能夠訪問他的授權(quán)用戶,加強(qiáng)基于用戶或者角色的訪問控制;完全禁止訪問未被授權(quán)的頁(yè)面類型(如配置文件、日志文件、源文件等);確保每個(gè)URL都被外部過濾器或者其他機(jī)制保護(hù)。6. 系統(tǒng)部署安全6.1. 限制主機(jī)上 WEB系統(tǒng)啟動(dòng)用戶的權(quán)限應(yīng)將WEB系統(tǒng)的啟動(dòng)用戶的權(quán)限限制在最小范圍內(nèi),禁止該用戶訪問其它不必要的路徑(如:/etc/、/root )62隱藏后臺(tái)調(diào)試信息WEB系統(tǒng)、數(shù)據(jù)庫(kù)等報(bào)告的異常信息、調(diào)試信息不應(yīng)該出現(xiàn)在頁(yè)面上。6.3.密碼加密存儲(chǔ)WEB系統(tǒng)中存儲(chǔ)的密碼應(yīng)采用一定的加密算法,以密文形式存放。此處所指的 密碼包括但不限于:1配置文件中的主機(jī)、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)、郵箱的密碼;2 數(shù)據(jù)庫(kù)中的用戶資料密碼加密算法的選擇應(yīng)根據(jù)實(shí)際需要,首選不對(duì)稱加密算法,次選破解難度高的對(duì) 稱加密算法。64隱藏重要配置參數(shù)信息對(duì)于重要的配置參數(shù)信息, 應(yīng)采用必要的隱藏措施。 此處所指的配置參數(shù)包括但不限于:1. 重要的用戶名、密碼;2. 重要設(shè)備的內(nèi)網(wǎng)地址(如:數(shù)據(jù)庫(kù)、存儲(chǔ)設(shè)備)6.5 .隱藏日志文件不應(yīng)將日志文件的路徑設(shè)置在頁(yè)面可達(dá)的位置,用戶通過頁(yè)面應(yīng)該無法訪問到系統(tǒng)產(chǎn)生的日志文件。6.6. 禁止不需要的 HTTP方法在無特定的需求情況下,應(yīng)只開放GET, HEAD, POST等安全的HTTP方法,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論