web安全學習 驗證機制存在的問題

2022-08-27 23:33:18 字數 2121 閱讀 9104

驗證機制是應用程式防禦惡意攻擊的中心機制。它處於防禦未授權的最前沿,如果使用者能夠突破那些防禦,他們通常能夠控制應用程式的全部功能,自由訪問其中的資料。缺乏安全穩定的驗證機制,其他核心安全機制(如回話管理和訪問控制)都無法有效實施。

web應用程式常用的驗證機制有:

1)  基於html表單的驗證(最常用)

2)  多元機制,如組合型密碼和物理令牌

3)  客戶端ssl證書或智慧卡(成本非常昂貴)

4)  http基本和摘要驗證(內網使用較多)

5)  使用ntlm或kerberos整合windows的驗證

6)  驗證服務

接下來說一下,在驗證機制中可能存在的一些問題。一共分為兩個個方面進行說明,分別為設計缺陷和執行缺陷

驗證機制的設計缺陷:

1)  密碼保密性不強:使用非常短或空白的密碼,已常用的字典詞彙或名稱為密碼,密碼和使用者名稱完全相同,依然使用預設密碼,存在這些情況容易導致暴力破解。

2)  蠻力攻擊登陸(允許攻擊者使用不同的密碼重複進行登陸嘗試)

3)  詳細的失敗資訊(顯示是使用者名稱或者密碼錯誤,攻擊者可以輕易的確定有效的使用者名稱作為隨後攻擊的基礎)

通過詳細的失敗資訊可以列舉使用者名稱,然後根據使用者名稱去猜測密碼。

4)  證書傳輸易受攻擊(使用非加密的http連線,應用程式處理證書的方式不安全)

進行一次成功登陸,監控客戶端和伺服器之間的所有來回流量,確定在來回方向上傳輸證書的每一種情況,如果發現通過url字串或者cookie的方式提交證書,想法弄清楚開發者這樣做的目的。同時使用http協議或者查詢字串傳遞都是不安全的。

5)  密碼修改功能(允許詳細的錯誤資訊,說明被請求的使用者名稱是否有效,允許攻擊者無限制猜測現有密碼字段,在驗證現有密碼後,僅檢查新密碼與確認密碼)

使用無效的使用者,無效的現有密碼及不匹配的「新密碼」和「確認密碼」值向密碼修改功能提交各種請求,設法確定任何可用於使用者名稱列舉和暴力攻擊的行為。

6)  忘記密碼功能

使用者名稱列舉,質詢響應問題

7)  記住我功能

記住我功能通過簡單的cookie執行,可能造成推測出其cookie值從而避免登陸

8)  使用者偽裝功能(造成垂直提權等功能)

9)  證書確認不完善(截斷密碼,只確認前n個字元,不對密碼進行大小寫檢查,刪除不常用的字元)

10) 非唯一性使用者名稱(列舉,洩露另乙個賬戶的密碼)

11)  可**使用者名稱

12)  可**初始密碼

13)  證書分配不安全(通過郵件或者郵寄密碼,啟用url表現出某種順序)

驗證機制執行缺陷:

1)故障開放登陸機制(邏輯缺陷,

2)多階段登入機制中的缺陷

一些應用程式使用精心設計的多階段登入機制,例如輸入使用者名稱和密碼,響應乙個質詢,答案是pin中的特殊數字或乙個值得紀念的詞,提交在不斷變化的物理令牌上顯示的某個值。

3)不安全的證書儲存

以明文儲存證書

上面輸了驗證機制中可能存在的一些問題,下面來說一下如何保障驗證機制的安全,

在設計安全機制的時候,需要考慮以下的因素:

應用程式所提供功能的安全程度

使用者對不同型別的驗證控制的容忍和接受程度

支援乙個不夠友好的使用者介面系統所需的成本

競爭性解決方案相對於應用程式可能產生的收入方面的金融成本或它所保護資產的價值

具體方法如下:

1)  使用可靠的證書(強密碼,唯一的使用者名稱,隨機)

2)  安全處理證書(使用https載入登入表單)

3)  正確確認證書

4)  防止資訊洩露

5)  防止蠻力攻擊

6)  防止濫用密碼修改功能

7)  防止濫用賬戶恢復功能

8)  日誌,監控與通知

web安全的學習路線

1.基礎知識 基礎知識裡面分三個部分 01 基礎語言,在基礎語言這部分,包含 asp,php,linux 等 02.資料庫學習 sql語言,sql server,mysql,oracle 等 03.伺服器配置.linux 伺服器配置,windows伺服器配置,iptables 配置等等 這裡需要注意...

web安全的學習路線

1.基礎知識 基礎知識裡面分三個部分 01 基礎語言,在基礎語言這部分,包含 asp,php,linux 等 02.資料庫學習 sql語言,sql server,mysql,oracle 等 03.伺服器配置.linux 伺服器配置,windows伺服器配置,iptables 配置等等 這裡需要注意...

web安全的學習之路(二)

xss漏洞通過一些惡意 可以獲得我們的在 上輸入的一些個人資訊或者關鍵的資料,往往造成企業或者個人的一些損失,但是,xss漏洞的原理是我們通過利用xss漏洞執行我們自己定義的命令所以,從某種意義上來講,這個漏洞完全可以用在一些別的地方,我們的目的只是要執行我們的 就可以了。因此,我們利用這個漏洞的目...