轉自 http://blog.csdn.net/iwebsecurity/article/details/1688304web
相信你們都或多或少的聽過關於各類Web應用安全漏洞,諸如:跨site腳本攻擊(XSS),SQL注入,上傳漏洞...形形色色.
在這裏我並不否定各類命名與歸類方式,也不評價其命名的合理性與否,我想告訴你們的是,形形色色的安全漏洞中,其實所蘊含安全問題本質每每只有幾個。 我我的把Web應用程序安全性本質問題歸結如下三個部分:
1、輸入/輸出驗證(Input/output validation)
2、角色驗證或認證(Role authentication )
3、全部權驗證(Ownership authentication)
說到這,讀者必定想知道我這三種分類與形形色色的安全性問題有什麼關係?下面我逐個給您概略解答:
輸入/輸出驗證
這裏的輸入與輸出其實都是發生在用戶界面(User Interface)這一個層面上的,好比:你某一站點上提交一份註冊信息,每每會收到諸多提示:「用戶名非法」,「姓名不能使用英文「......其實 這就是輸入驗證的一個實例。什麼狀況是輸出呢? 好比說你成功提交一份註冊信息後,系統會返回一個確認頁(Registerred Confirmation),每每在這個頁面上會顯示你註冊時提交的部分或所有信息,那麼在這裏顯示的信息就是我所說的輸出實例之一,輸入須要作什麼驗 證? 假如你在提交時,在Address那一欄輸 入:<script>alert("iwebsecurity");</script>, 當你到達註冊的確認頁時,會有什麼發生?若是確認頁沒有作輸出驗證處理,那很顯然會在到達確認頁的時候出現一個Javascript打出的提示框。其實這 就是跨site腳本攻擊的一個小小的實例。固然了,單純的輸入/輸出驗證涉及的面可可以寫一小本書了,努力在後續文章中給你們詳解。
角色驗證或認證
咱們就拿CSDN來講吧,用戶有這些角色:其一能夠說是遊客,就是瀏覽者沒有登陸時的角色;其二是免費的註冊用戶;或許未來CSDN深刻發展了,業務有 所更新,還會出現收費的註冊用戶。以上只是用戶角色,那在CSDN公司內部還會有管理員角色,還有可能管理員又能夠根據板塊分爲各類不一樣的角色。你們看到 了吧,你每天訪問的CSDN一共可能有多少角色? 接下來的問題就是權限問題了,爲何會有角色? 就是爲了控制權限的。每種角色都有本身特定的與公共的 權限,這些權限的邏輯關係是至關複雜的,若是一個Web應用在角色上沒有一個詳細的合理的設計,將會給開發人員帶來無限痛苦和麻煩。那如今我要問幾個問 題:你能保證每種角色只能作其分內的事兒?你是如何去保證的呢?方法可靠嗎?有沒有漏洞?...... 這,就是我要說的角色驗證或認證。BTW:爲何 我會說驗證或認證呢?你能夠這麼理解,角色性存在於兩個階段,其一進入階段,好比你登陸的那一瞬間,你進入了一個特定的角色;另外一個階段就是維持階段,你 如何確保你登陸後老是以登陸時的身份在操做呢?那前者能夠說是:認證,後者就是驗證了。(有點羅嗦不?)
給一個角色認證/驗證方面的虛擬案例,好比:一個在線電影服務提供商,會免費給您開一個試用角色,若是這試用角色驗證不當,可能會致使用戶權限提高而成爲一個合法的收費用戶,而這個收費用戶你每每卻收不到他的任何費用。
全部權驗證
這個問題的存在也是基於角色的,只不過它所關心的是同級別的角色之間的權限問題。就拿CSDN來講吧,我是CSDN的一個免費用戶,你也是。如今的問題 是:我能夠替你操做嗎,我能夠替你發表文章嗎?我能修改你的個性設置嗎?若是不能,CSDN是如何實現的?雖然你和我都是普通用戶,可是你有你的隱私我也 有個人隱私,如何保證嚴格的全部權驗證就顯得尤其關鍵了。比較簡單吧,這就是我所說的全部權驗證。
我能夠很自信的告訴你,只要是Web應用安全性問題,它逃不出在這三大部分,可能你還沒法把形形色色的Web應用安全性問題與這三個部分對應併合理的解釋清楚,可是確實只有這麼簡單的幾個部分安全