動易安全開發手冊
目錄
一、輸入驗證3
1.什麼是輸入 3
2.輸入驗證的必要性 3
3.輸入驗證技術 3
3.1 主要防禦方式 3
3.2 輔助防禦方式 5
二、輸出編碼8
1.輸出的種類 8
2.輸出編碼的必要性 8
3.輸出編碼 8
4.常用測試輸出方法 11
三、防止sql注入12
1.什麼是sql注入 12
2.sql注入的種類 12
3.如何防止sql注入 12
3.1 sql注入產生的原因 12
3.2主要防禦方式 12
3.3 輔助防禦方式 15
四、跨站指令碼攻擊17
1.什麼是跨站指令碼攻擊 17
2.跨站指令碼攻擊的危害 17
3.如何防止跨站指令碼攻擊 17
3.1主要防禦方式 17
3.2輔助防禦方式 18
4.xss漏洞另乙個攻擊趨勢 19
五、跨站請求偽造21
1.什麼是跨站請求偽造 21
2.跨站請求偽造的危害 21
3.如何防止跨站請求偽造 21
3.1主要防禦方式 21
3.2輔助防禦方式 23
六、越權操作24
1.什麼是越權操作 24
2.越權操作的危害 24
3.如何防止越權操作 24
七、io操作安全25
八、快取洩漏26
1.什麼是快取洩漏 26
2.防禦方法 26
九、系統加密27
1. 主要防禦方式 27
十、資訊洩露29
十一、日誌和監測31
十二、web.config的安全配置32
1.authentication節點 32
2.authorization 節點 32
3.customerrors 節點 32
4.pages 節點 33
十三、綜合例項講解34
參考資料 40
一、 輸入驗證
1. 什麼是輸入
輸入是編譯時以外的全部資料交換。web應用程式從各種**獲取輸入,例如所有使用者傳送的,或者應用程式執行的往返資料(使用者提交的資料、檢視狀態、cookie、查詢字串引數等),以及後台資料(資料庫、配置資料和其他資料**)。所有輸入的資料都會在某種情況下影響請求的處理。[1]
2. 輸入驗證的必要性
為什麼輸入驗證如此重要?第乙個原因非常明顯:使用者都不希望使用虛假的資料。應用程式會處理這些資料,根據它們得出結果,並最終儲存到後台資料儲存中。網路上的其他應用程式有可能在某種情況下需要這些資料,這些程式可能依賴於資料的正確性。(如果這些資料沒有經過驗證,就有可能會帶來麻煩。)[1]
一切從外部獲取的資料都可能是惡意的,如果缺少對資料的驗證,將會帶來很多安全問題。如email 驗證、使用者名稱驗證等。如:缺少對email的長度驗證,在儲存email時將出現資料庫溢位錯誤。缺少對email的格式驗證,在傳送郵件時將會給程式帶來錯誤等。
3. 輸入驗證技術
3.1 主要防禦方式
防禦手段一:驗證控制項驗證
保護級別:★★★★☆
描述:對於表現層, 可以利用驗證控制項,對使用者輸入的資料進行型別、大小、範圍的驗證。
驗證控制項必須做到在客戶端和服務端同時驗證,客戶端的驗證可以減輕對服務端請求的次數和使用者操作的方便性。服務端驗證確保資料的正確性,同時也防止使用者偽造請求繞過客戶端的驗證。
優點: 驗證簡單有效,可重複使用,通常應用於客戶端驗證較多。
缺點: 驗證不完整,有些驗證使用者可以繞過。
應用舉例:
動易sitefactory系統中,除了使用vs自帶的驗證控制項外,還擴充套件了和增加了部份驗證控制項,在powereasy.framework.controls 命名空間下,可以看到擴充套件的requiredfieldvalidator 控制項,郵箱驗證控制項emailvalidator等。具體可以檢視資料夾 core items 中powereasy.framework.controls專案下的extendedvalidator資料夾。這些控制項一般使用在使用者輸入的驗證,如註冊時使用者名稱的驗證:
防禦手段二:業務邏輯層驗證
保護級別:★★★★☆
描述:關鍵的地方(涉及到點數、金錢、許可權)根據情況還需要在業務層或者資料訪問層進行驗證,以保證資料的合法性。對於html**輸入的地方,輸入時一定要進行html格式化處理,否則有可能會引起全域性顯示錯誤。如輸入:
圖 2可以看出,系統沒有對「..」進行進濾,於是就造成了這個漏洞。
解決方法:過濾 「..」 。
例項 7: kesioncms瀏覽任意目錄,刪除任意目錄和檔案漏洞
漏洞檔案:
kesion.webfilescls.asp
漏洞描述:
webdir=ks.setting(3)
topdir=replace(webdir&topdir,"//","/")
action=lcase(trim(ks.g("action")))
currentdir=trim(replace(ks.g("currentdir"),"../",""))
currentpage=ks.chkclng(ks.g("page"))
if currentdir<>"" then
currentdir=replace(currentdir & "/","//","/")
end if
set fso=server.createobject(trim(ks.setting(99)))
select case action
可以看出,上面只過濾「../ 」
但可以這樣繞過 「…/./」 過濾後就成了「../」。
解決方法:過濾 「..」
例項 8: cuteeditor檔案管理漏洞
cuteeditor編輯品中的插入的都有對以上傳的檔案進行操作,但也沒有限制性對「..」的使用,這樣就可以讓使用者複製或移動任意檔案到系統任意目錄。
解決方法:過濾「..」
[1].開發更安全的asp.net2.0應用程式,[美]dominick baier 著,華中宇 田亮君 陳文 譯.人民郵電出版社.2008.7
frid 開發 RFID讀寫器開發包(完整版)
例項簡介 uhf超高頻藍芽讀寫器 包括開發文件,源 以及uhf超高頻藍芽讀寫器 使用說明書全套都在內。例項截圖 核心 uhf超高頻藍芽讀寫器 uhf藍芽讀寫器開發資料 900 demo rmu900 api.dll rmu900 demo v2.3 使用手冊.doc rmu demo v2.3.ex...
微信公眾平台開發介面PHP SDK完整版
如下 更新日誌 複製 如下 方倍工作室 define token weixin wechatobj new wechatcallbackapitest if isset get echostr else class wechatcallbackapitest 檢查簽名 private functio...
SVN客戶端使用者使用手冊(完整版)
如圖 2 如果對庫中某乙個檔案進行了修改,系統會自動為這個檔案和這個檔案所在的各級父資料夾加上紅色嘆號,代表該檔案或目錄已經在本地被修改,如圖3 3 當所有對版本庫的修改操作完畢後,右鍵單擊工作區資料夾,選擇 commit 提交新版本,輸入密碼後系統將把修改後的版本庫上傳到服務端,即完成一次對版本庫...