只要是防御注入無非從以下幾點入手:
- 在構造動態SQL語句時,一定要使用類安全(type-safe)的參數加碼機制
- 在部署應用前,始終要做安全審評(security review)
- 千萬別把敏感性數據在數據庫里以明文存放
- 確認編寫了自動化的單元測試,來特別校驗你的數據訪問層和應用程序不受SQL注入攻擊
- 鎖定你的數據庫的安全,只給訪問數據庫的web應用功能所需的最低的權限
- 很多新手從網上下載SQL通用防注入系統的程序,在需要防范注入的頁面頭部用 來防止別人進行手動注入測試
只要是防御注入無非從以下幾點入手:
web業務可能存在以下風險點:
業務環節存在的風險:主要是用戶可見的,如注冊登錄等是否有完善的身份驗證機制,cookie session 機制,驗證碼能否被爆破等;
支撐系統存在的風險:用戶訪問控制機制是否完善,是否存在水平或垂直越權,用戶數據是否加密存儲,是否明文傳輸,是否存在未授權的接口調用,重放遍歷等;
業務環節間存在的風險:業務流程是否存在亂序,是否可以跳過、回退或者是重放。環節間的數據傳輸是否有一致性校驗以及加密機制,是否可以被監聽、竊取、篡改或者重放;
支撐系統間存在的風險:系統間傳遞的參數是否加密,是否能監聽竊取或者篡改,是否有著完備的過濾機制來預防 SQLi XSS 等攻擊;
業務環節與支撐系統間存在的風險:數據傳輸是否加密,是否用不完善的加密機制(如:前端加密,簡單的md5等),是否能比較好的處理請求的并發,防止出現條件競爭,是否有完善的過濾和編碼機制預防 SQLi XSS 等攻擊;
網頁防篡改一般部署在核心交換機上并采用雙臂代理模式部署模式,雙臂代理模式是Web應用防火墻部署種的最佳模式。這個模式也是拓撲過程中推薦的模式,能夠提供最佳的安全性能。在此模式中,所有的數據端口都將被開啟;端口eth1是對外的,直接面向因特網的端口;端口eth2將會和內部的設備(交換機等)進行連接,是面向內部的。
管理端口可以被分配到另一個網段,我們推薦將管理數據和實際的流量分離,避免因為實際流量和管理數據的沖突。以下為示例拓撲圖:
風險評估途徑包括基線評估、詳細評估和組合評估三種。
安全基線是諸多標準規范中規定的一組安全控制措施或者慣例,這些措施和慣例適用于特定環境下的所有系統,可以滿足基本的安全需求,使系統能達到一定的安全防護水平。可選的安全基線包括:國際標準和國家標準,例如ISO 27001、信息安全等級保護;
對資產進行詳細識別和評價,對可能引起風險的威脅和脆弱性水平進行評估,根據風險評估的結果來識別和選擇安全措施,即識別資產的風險并將風險降到可接受的水平,以此證明管理者所采用的安全措施是恰當的。
采用基于基線評估與詳細評估兩者之間的評估方式。
方法是組織應先對所有系統進行一次初步的高級風險評估。著眼于信息系統的商務價值和可能面臨的風險,識別出組織內具有高風險或對其商務運作極為關鍵的信息資產(或系統),這些資產或系統應劃分在詳細風險評估的范圍,而其他系統則可以通過基線風險評估直接選擇安全措施。
等級保護測評方法有以下幾種:
訪談:訪談的對象是人員。典型的訪談人員包括信息安全主管、信息系統安全管理員、信息管理員、網絡管理員、資產管理員等。對技術要求,使用“訪談”方法進行測評的目的是為了了解信息系統的全局性(包括局部、但不是細節)、方向/策略性和過程性信息,一般不涉及到具體的實現細節和具體技術措施;對管理要求,獲取證據。
檢查:測評人員通過對測評對象(如制度文檔、各類設備、安全配置等)進行觀察、查驗、分析以幫助測評人員理解、澄清或取得證據的過程。檢測對象包括:各類設備、安全配置、機房、存儲介質等。對技術要求,“檢查”的內容應該是具體的、較為詳細的機制配置和運行實現;對管理要求,“檢查”方法主要用于規范性要求(檢查文檔)。
測試:測評人員使用預定的方法/工具使測評對象(各類設備或安全配置)產生特定的結果,將運行結果與預期的結果進行比對的過程。對技術要求,“測試”的目的是驗證信息系統當前的、具體的安全機制或運行的有效性或安全強度。對管理要求,一般不采用測試技術。
一般而言,大型網絡信息系統面臨著兩方面的安全挑戰:
機構內的信息技術環境威脅:由于機構的信息系統都會在一個給定的信息技術環境中運作,信息系統的安全設計一般都會對它置身其中的環境做出某些物理、控制、威脅等方面的假設,因此,機構內的信息技術環境與信息系統假設的環境是否匹配往往是很多安全漏洞的來源。例如,機構一般會希望能規劃設計一個與周邊信息技術環境整合的信息系統。一般來說,整個信息系統的建設都是由業務驅動的,但這一規劃設計過程經常會因為技術人員和業務人員之間溝通不暢而失敗。由于這個溝通上的問題,如果信息系統的設計是由業務管理人員主導的,那么信息系統跟周邊的信息技術環境的整合就很容易出現問題。但由此所面臨的安全問題,就是信息系統不能肯定其信息技術環境是否安全地滿足它的運作要求。
信息系統的系統安全管理問題:隨著一個機構的業務不斷擴大和處理數據的增多,機構的信息系統變得越來越龐大而日趨難以管理,這就需要由具有專業技能的管理人員來實現安全管理。對機構而言,信息系統是受業務驅動并為業務提供服務的。因為業務運作對信息系統的依賴性,機構的業務管理者都不可避免地要求信息系統有一定的服務質量(水平)保證(Service Level Agreement,SLA),其中,相當重要的部分的質量是屬于安全保障(Security Assurance)。信息系統的安全質量需要機構管理層的積極參與才能得到應有的保障。管理層在信息安全管理問題上可以發揮不同層面的作用,例如,機構管理者確定信息系統安全的含義,業務管理者判斷業務承受風險的能力,系統安全管理者制定風險控制措施與管理策略等。
大型網絡信息系統面臨挑戰的防護措施:
防火墻技術。在信息化系統中使用防火墻技術可以使數據、信息等在進行網絡層訪問時產生一定的控制。經過鑒別限制或者更改越過防火墻的各種數據流,可以實現網絡安全保護,極大限度地對網絡中出現的黑客進行阻止,在一定層面上可以防止黑客惡意更改、隨意移動網絡重要信息。
安全檢查技術。安全檢查技術主要用于對用戶的合法性進行鑒別,在鑒別過程中,通常需要用戶輸入口令,由于口令本身較容易被猜到以及失竊,可能增加黑客入侵的幾率。為了提高其安全性,用戶可使用更為可靠、穩妥的認證方案,經過身份認證的技術可以在一定范圍內保證信息的完整性機密性。
數字簽名技術。所謂簽名就是驗證用戶真實身份的一種獨有信息,數字簽名技術在使用過程中,通常采用解密、加密的方式對報文的數字簽名進行實現。決定其安全性的主要因素就是密碼體制的安全程度,隨著密碼體制的不斷改進,其安全性也會隨之提高。
入侵檢測技術。防火墻只是保護內部的網絡不被外部攻擊,對于內部網絡存在的非法活動監控程度還不夠,入侵系統就是為了彌補這一點而存在,它可以對內部、外部攻擊積極地進行實時保護,在網絡受到攻擊前就可以將信息攔截,提高信息的安全性。
漏洞掃描技術。如今網絡不斷復雜且變幻莫測,僅僅依靠網絡管理員進行安全漏洞以及風險評估顯然不行,只有依靠網絡的安全掃描工具才可以在優化的系統配置下將安全漏洞以及安全隱患消除掉。在某些安全程度較低的狀況下可以使用黑客工具進行網絡的模擬攻擊,這樣可以一定層面地將網絡漏洞暴露出來。
密碼技術。密碼技術就是使用密碼機對明文信息進行組合、交換,產生密文,然后將加密的信息在網絡上傳播。惡意者若將密文截獲,必須進行正確的解碼才能獲取有用信息,否則也是徒勞無獲,這就在一定程度上避免了信息的泄漏。
偵聽監測技術。使用配置分析軟件來對網絡進行掃描,一旦發現原有的設置參數出現了改動,就必須采取相應的措施來對其進行處理。對內部網絡中的違規操作行為進行實時監控。其響應對策主要有發送警告信息,拒絕存儲。
電子文檔的管理不僅注重每個階段的結果,也要重視每項工作的具體過程,并把這些過程一一記錄下來。其中,有關維護其信息安全方面的主要要求如下:
電子文檔的制作過程要責任分明;
電子文檔形成后應及時進行積累,以防發生信息損失和變動;
建立和執行科學的歸檔制度;
建立和執行嚴格的保管制度;
加強對電子文檔利用活動的管理;
建立電子文檔管理的記錄系統。
信息系統的安全保護等級分為五級,一至五級等級逐級增高:
第一級,信息系統受到破壞后,會對公民、法人和其他組織的合法權益造成損害,但不損害國家安全、社會秩序和公共利益。第一級信息系統運營、使用單位應當依據國家有關管理規范和技術標準進行保護。
第二級,信息系統受到破壞后,會對公民、法人和其他組織的合法權益產生嚴重損害,或者對社會秩序和公共利益造成損害,但不損害國家安全。國家信息安全監管部門對該級信息系統安全等級保護工作進行指導。
第三級,信息系統受到破壞后,會對社會秩序和公共利益造成嚴重損害,或者對國家安全造成損害。國家信息安全監管部門對該級信息系統安全等級保護工作進行監督、檢查。
第四級,信息系統受到破壞后,會對社會秩序和公共利益造成特別嚴重損害,或者對國家安全造成嚴重損害。國家信息安全監管部門對該級信息系統安全等級保護工作進行強制監督、檢查。
第五級,信息系統受到破壞后,會對國家安全造成特別嚴重損害。國家信息安全監管部門對該級信息系統安全等級保護工作進行專門監督、檢查。
IBM安全開發過程提出應該考慮以下幾類安全需求:
審計和日志記錄:盡管人們通常依賴網絡數據包日志來進行取證分析,應用程序內部的日志記錄也是同等重要的,應用程序應該對軟件的保密性、可用性和完整性等至關重要的事件進行內部日志記錄。例如,應用需要有審計日志。審計日志記錄的日志事件必須包括IP地址和時間等。必須記錄的日志事件包括賬號驗證嘗試、賬號鎖定、應用錯誤和與規定的驗證程序不匹配的輸入值等。
身份驗證:由于大多數應用具備訪問控制限制,確保這些訪問控制機制不能被破解或操作未經授權的訪問非常重要,如,要求強密碼。任何身份驗證憑證必須滿足適當的強度,其中包括大寫字母、小寫字母和數字字符,而且在長度上不能小于8個字符。
會話管理:HTTP協議最初的設計難以在整個應用會話持續期間跟蹤會話。這推動了HTTP協議上會話管理功能的開發。例如,一個安全需求是合法用戶自始至終可以保持正常訪問,遠程會話的所有資源利用必須加以監控和限制,以防止或減輕對應用可用性的攻擊。
輸入驗證和輸出編碼:盡管在建模和架構階段大多數設計級安全性缺陷都會被發現,但大多數開發和交付的安全性問題是由于不良的輸入驗證和輸出編碼而引入的,因此用戶提供的數據要通過適當的驗證,例如,所有輸入必須通過集中的驗證控制來加以驗證。
異常處理:從嚴格意義上講,一個應用不可能完全安全。隱藏詳細的應用異常或過于具體的錯誤消息,能夠延長攻擊應用所需的時間,因此一個安全需求是應將所有錯誤消息捕獲,并記錄在安全性審計日志中。
加密技術:選擇一種滿足業務需要、受行業支持的加密算法極其重要。如,應用所使用的所有加密算法必須經過聯邦信息處理標準批準且與之兼容。
存儲數據:盡管所有應用都試圖保護存儲中的數據,但還是需要假設這些數據會被泄露。任何敏感數據都要加密。一個安全需求的例子是,如果應用包含必須強加保護的敏感用戶信息,則必須使用加密技術來保護用戶名、地址和財務數據等敏感的用戶信息。
使用數據:只要軟件應用被實現,就存在對傳輸數據的攻擊。當應用數據跨越開放和封閉的網絡和系統時,需要加以保護。如果應用在不可信或不安全的網絡間傳輸敏感的用戶信息,那么所有通信內容必須予以加密。
配置管理:新的漏洞每天都會涌現,盡管其中一些問題可通過打補丁的方式加以糾正,但有時需要通過特定的部署措施來同時滿足業務使用要求和安全要求。如,所有管理界面必須從非管理界面中分離出來。
磁盤 RAID 保護技術是:
鏡像:鏡像是一種冗余技術,為磁盤提供保護功能,防止磁盤發生故障而造成數據丟失。
數據條帶:磁盤存儲的性能瓶頸在于磁頭尋道定位,它是一種慢速機械運動,無法與高速的 CPU 匹配。
數據校驗:鏡像具有高安全性、高讀性能,但冗余開銷太昂貴。數據條帶通過并發性來大幅提高性能,然而對數據安全性、可靠性未作考慮。數據校驗是一種冗余技術,它用校驗數據來提供數據的安全,可以檢測數據錯誤,并在能力允許的前提下進行數據重構。
等級保護的控制項是等級保護過程中可控變量和檢查過程中的主要檢查項,網絡安全等級保護基本要求在整體框架結構上以三種分類為支撐點,自上而下分別為:類、控制點和項。不同級別的等級要求有不同的安全措施,等級保護控制項決定了等級保護是否能審核通過。
類: 表示大分類,包括:安全物理環境、安全通用網絡、安全區域邊界、安全計算環境、安全管理中心、安全管理制度、安全管理機構、安全管理人員、安全建設基礎、安全運維管理
控制點:表示每個大類下的關鍵控制點
項:是控制點下的具體要求項
| 對象 | 類別 | 控制點 |
|---|---|---|
| 安全通用要求 | 安全物理環境(10) | 物理位置選擇、物理訪問控制、防盜竊和防破壞、防雷擊、防火、防水和防潮、防靜電、溫濕度控制、電力供應、電磁防護 |
| 安全通信網絡(3) | 網絡架構、通信傳輸、可信驗證 | |
| 安全區域邊界(6) | 邊界防護、訪問控制、入侵防范、惡意代碼和垃圾郵件防范、安全審計、可信驗證 | |
| 安全計算環境(11) | 身份鑒別、訪問控制、安全審計、入侵防范、惡意代碼防范、可信驗證、數據完整性、數據保密性、數據備份恢復、剩余信息保護、個人信息保護 | |
| 安全管理中心(4) | 系統管理、審計管理、安全管理、集中管控 | |
| 安全管理制度(4) | 安全策略、管理制度、制定和發布、評審和修訂 | |
| 安全管理機構(5) | 崗位設置、人員配備、授權和審批、溝通和合作、審核和檢查 | |
| 安全管理人員(4) | 人員錄用、人員離崗、安全意識和培訓、外部人員訪問管理 | |
| 安全建設管理(9) | 定級和備案、安全方案設計、產品采購和使用、自行軟件開發、外包軟件開發、工程實施、測試驗收、系統交付、等級測評、服務供應商選擇 | |
| 安全運維管理(14) | 環境管理、資產管理、介質管理、設備維護管理、漏洞與風險管理、網絡和系統安全管理、惡意代碼防范管理、配置管理、密碼管理、變更管理、備份與恢復管理、安全事件處置、應急預案管理、外包運維管理 |
Easy-IP方式指的是利用出接口的公網IP地址作為NAT轉換后的地址,也同時轉換地址和端口,一個公網IP地址可以同時被多個私網用戶使用,可以看成是NAPT方式的一種“變體”。出接口地址方式的應用場景比較特殊,當防火墻上的公網接口通過撥號方式動態獲取公網IP地址時,如果只想使用這一個公網IP地址來進行地址轉換,這個時候就不能在NAT地址池中配置固定的地址,因為公網IP地址是動態變化的。
Easy IP 方式的實現原理,具體過程如下:
假設私網中的Host A 主機要訪問公網的Server,首先要向Router 發送一個請求報文(即Outbound 方向),此時報文中的源地址是10.1.1.100,端口號1540。
Router 在收到請求報文后自動利用公網側WAN 接口臨時或者固定的“公網IP地址:端口號”(162.10.2.8:5480),建立與內網側報文“源IP 地址:源端口號”間的Easy IP轉換表項(也包括正、反兩個方向),并依據正向Easy IP 表項的查找結果將報文轉換后向公網側發送。此時,轉換后的報文源地址和源端口號由原來的(10.1.1.100:1540)轉換成了(162.10.2.8:5480)。
Server 在收到請求報文后需要向Router 發送響應報文(即Inbound 方向),此時只須將收到的請求報文中的源IP 地址、源端口號和目的IP 地址、目的端口號對調即可,即此時的響應報文中的目的IP 地址、目的端口號為162.10.2.8:5480。
Router 在收到公網側Server 的回應報文后,根據其“目的IP 地址:目的端口號”查找反向Easy IP 表項,并依據查找結果將報文轉換后向內網側發送。即轉換后的報文中的目的IP 地址為10.1.1.100,目的端口號為1540,與Host A 發送請求報文中的源IP地址和源端口完全一樣。
軟件安全一般包含以下幾種接觸點:
代碼審核:所有軟件開發都會產生代碼,因此代碼審核成為第一個接觸點。代碼審核可以使用商業或免費工具。
風險分析:在架構設計中,應進行風險分析,確定可能的攻擊,并提供一致的安全防護措施。安全分析人員應通過風險分析揭示體系結構存在的風險和瑕疵。
滲透測試:滲透測試可以評估真實運行環境中軟件的安全性。結合體系結構風險分析來設計滲透測試效果會更好。
基于風險的安全測試:功能測試能夠告訴軟件開發人員是否能實現其功能設計,安全測試會告訴軟件開發人員該功能設計能否正確而安全地實現。
濫用案例:濫用案例也稱為誤用案例,通過設計濫用案例,可以更準確地描述系統在受到攻擊時的行為表現:應該保護什么、免受誰的攻擊,以及保護多長時間等。
安全需求:在軟件開發的需求階段應當充分考慮安全方面的需求,好的安全需求包括功能安全需求和異常處理安全需求。功能安全需求包括如數據加密、隱私保護和訪問控制等,而異常處理安全需求包括軟件異常處理、惡意攻擊處理等。
安全操作:要求軟件公司不同部門、不同職位人員之間進行密切合作和協同一致的工作,在實踐中可以在應用上述接觸點時互相配合工作。
雙查詢注入簡單來說就是嵌套子查詢注入,子查詢可以簡單的理解在一個select語句里還有一個select,里面的這個select語句就是子查詢。而攻擊者發現當在一個聚合函數,比如count函數后面如果使用分組語句就會把查詢的一部分以錯誤的形式顯示出來,而利用這些報錯信息則可以發動報錯型注入,如果沒有返回報錯信息則可以嘗試盲注。
sql 注入防范措施有以下這些:
把應用服務器的數據庫權限降至最低,盡可能地減少 SQL 注入攻擊帶來的危害。
避免網站打印出SQL錯誤信息,比如類型錯誤、字段不匹配等,把代碼里的SQL語句暴露出來,以防止攻擊者利用這些錯誤信息進行SQL注入。
對進入數據庫的特殊字符(’’尖括號&*;等)進行轉義處理,或編碼轉換。
所有的查詢語句建議使用數據庫提供的參數化查詢接口,參數化的語句使用參數而不是將用戶輸入變量嵌入到SQL語句中,即不要直接拼接SQL語句。
在測試階段,建議使用專門的 SQL 注入檢測工具進行檢測。網上有很多這方面的開源工具,例如sqlmap、SQLninja等。
善用數據庫操作庫,有些庫包可能已經做好了相關的防護,我們只需閱讀其文檔,看是否支持相應的功能即可。
磁盤 RAID 保護技術是:
鏡像:鏡像是一種冗余技術,為磁盤提供保護功能,防止磁盤發生故障而造成數據丟失。
數據條帶:磁盤存儲的性能瓶頸在于磁頭尋道定位,它是一種慢速機械運動,無法與高速的 CPU 匹配。
數據校驗:鏡像具有高安全性、高讀性能,但冗余開銷太昂貴。數據條帶通過并發性來大幅提高性能,然而對數據安全性、可靠性未作考慮。數據校驗是一種冗余技術,它用校驗數據來提供數據的安全,可以檢測數據錯誤,并在能力允許的前提下進行數據重構。