Web應用程序中是什么導致安全性問題呢婿滓?一般有以下幾個原因:
1老速、復雜應用系統(tǒng)代碼量大、開發(fā)人員多凸主、難免出現疏忽橘券。
2、系統(tǒng)屢次升級卿吐、人員頻繁變更旁舰,導致代碼不一致。
3但两、歷史遺留系統(tǒng)鬓梅、試運行系統(tǒng)等多個Web系統(tǒng)共同運行于同一臺服務器上。
4谨湘、開發(fā)人員未經過安全編碼培訓或者公司根本就沒有統(tǒng)一的安全編碼規(guī)范绽快。
?????? 5、測試人員經驗不足或者沒經過專業(yè)的安全評估測試就發(fā)布上線紧阔。
?????? 6坊罢、沒有對用戶的輸入進行驗證,舉幾個例子:
1)永遠不要信任用戶的輸入擅耽,要對用戶的輸入進行校驗
2)數字型的輸入必須是合法的數字
3)字符型的輸入中對 編碼符號要進行特殊處理
4)驗證所有的輸入點活孩,包括Get,Post乖仇,Cookie以及其他HTTP頭
Web應用通常存在的十大安全問題:
????? 1憾儒、SQL注入
?????? 拼接的SQL字符串改變了設計者原來的意圖询兴,執(zhí)行了如泄露、改變數據等操作起趾,甚至控制數據庫服務器诗舰, SQL Injection與Command Injection等攻擊包括在內。
2训裆、跨站腳本攻擊(簡稱CSS或XSS)
?????? 跨站腳本(Cross - SiteScripting)是指遠程Web頁面的Html代碼可以插入具有惡意目的數據眶根,當瀏覽器下載該頁面,嵌入其中的惡意腳本將被解釋執(zhí)行边琉,從而對客戶端用戶造成傷害属百。
3、沒有限制URL訪問
系統(tǒng)已經對URL的訪問做了限制变姨,但這種限制卻實際并沒有生效族扰。攻擊者能夠很容易的偽造請求,直接訪問未被授權的頁面.钳恕。
4别伏、越權訪問
用戶對系統(tǒng)的某個模塊或功能沒有權限,通過拼接URL或Cookie欺騙來訪問該模塊或功能忧额。
5厘肮、泄露配置信息
服務器返回的提示或錯誤信息中出現服務器版本信息泄露、程序出錯泄露物理路徑睦番、程序查詢出錯返回SQL語句类茂、過于詳細的用戶驗證返回信息。
6托嚣、不安全的加密存儲
常見的問題是不安全的密鑰生成和儲存巩检、不輪換密鑰和使用弱算法。使用弱的或者不帶Salt的哈希算法來保護密碼也很普遍示启。外部攻擊者因訪問的局限性很難探測這種漏洞兢哭。他們須先破解其他東西以獲得需要的訪問。
7夫嗓、傳輸層保護不足
在身份驗證過程中沒有使用SSL / TLS迟螺,因此暴露傳輸數據和會話ID,被攻擊者截聽舍咖,或使用過期或者配置不正確的證書矩父。
8、登錄信息提示
用戶登錄提示信息會給攻擊者一些有用的信息排霉,作為程序的開發(fā)人員應該做到對登錄提示信息的模糊化窍株,以防攻擊者利用登錄得知用戶是否存在。
9、重復提交請求
程序員在代碼中沒有對重復提交請求做限制球订,這樣就會出現訂單被多次下單后裸,帖子被重復發(fā)布。惡意攻擊者可能利用此漏洞對網站進行批量灌水辙售,致使網站癱瘓轻抱。
10飞涂、網頁腳本錯誤
訪問者所使用的瀏覽器不能完全支持頁面里的腳本旦部,形成“腳本錯誤”,也就是網站中的腳本沒有被成功執(zhí)行较店。遇到“腳本錯誤”時一般會彈出一個非常難看的腳本運行錯誤警告窗口
歸納一下士八,主要有以下幾點:
1、永遠不要信任用戶的輸入梁呈。對用戶的輸入進行校驗婚度,可以通過正則表達式或限制長度;對單引號和雙"-"進行轉換等官卡。
2蝗茁、永遠不要使用動態(tài)拼裝SQL,可以使用參數化的SQL或者直接使用存儲過程進行數據查詢存取寻咒。
3哮翘、永遠不要使用管理員權限的數據庫連接,為每個應用使用單獨的權限有限的數據庫連接毛秘。
4饭寺、不要把機密信息直接存放,加密或者Hash掉密碼和敏感的信息叫挟。
5艰匙、應用的異常信息應該給出盡可能少的提示,最好使用自定義的錯誤信息對原始錯誤信息進行包裝抹恳。
6员凝、SQL注入的檢測方法一般采取輔助軟件或網站平臺來檢測,軟件一般采用SQL注入檢測工具jsky奋献、MDCSOFT SCAN等健霹。采用MDCSOFT - IPS可以有效的防御SQL注入、XSS攻擊等秽荞。