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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論