1. 沒有用戶登錄,就可以直接訪問系統頁面;
處理方式有兩種:
a)系統頁面不多,直接在Web站點過濾器filter中增加session判斷,需要在登錄后session記錄登錄賬號信息;這種處理簡單
b)子系統和站點頁面比較多 ,這種一般就需要做單點登錄;基于開源cas的單點登錄是比較流行,這方面的資料大家可以網上查詢非常多;
2. 用戶登錄成功,但對于沒有權限的頁面或action;也可以直接訪問(瀏覽器直接輸入或爬蟲等工具)
一般業務系統都是按照功能模塊授權,用戶登錄后能訪問哪些功能頁面都在數據庫存儲,登錄后系統會返回顯示,這是針對普通用戶來說的安全;但如果是破壞的用戶則抵擋不住直接訪問action或頁面url;
這種情況就是一般說的垂直權限攻擊。其原理是由于Web應用沒有做權限控制,或僅僅在菜單上做了權限控制,導致惡意用戶只要猜測其他管理頁面的URL,就可以訪問或控制其他角色擁有的數據或頁面,達到權限提升的目的。
處理方式:
a)要求不嚴格的,只是禁止用戶直接在瀏覽器里輸入url或action地址訪問的情況
b)要完全限制用戶訪問沒有權限的action
對于此種有三種解決辦法
一種是為所有的action進行授權,用戶在訪問action時進行權限判斷;此種后期運維人員工作量耗大,實際操作性差。
再一種是將action與功能模塊關聯,建立一張關聯表;功能模塊是進行過授權的,底層在訪問action時增加判斷,看該action關聯的功能模塊對應當前登錄用戶是否有權限。;為了提高效率適當進行權限緩存。
最后一種是在頁面中添加Token防止越權訪問,這種前端頁面必須都是jsp頁面,訪問頁面時前端和服務端生成統一的token令牌;jsp提交到后臺時判斷令牌是否一致;但這種方法的缺點是測試用戶也可以進行令牌模擬,還不能從根本解決。
3. 對于url中傳輸userid的情況,可以串改userid達到數據操作
這種情況就是水平權限攻擊,也叫作訪問控制攻擊。Web應用程序接收到用戶請求,修改某條數據時,沒有判斷數據的所屬人,或者在判斷數據所屬人時從用戶提交的表單參數中獲取了userid。導致攻擊者可以自行修改userid修改不屬于自己的數據。所有的更新語句操作,都可能產生這個漏洞。
處理方式主要是userid都要從session獲取,不要靠參數傳遞。
手機瀏覽
全國
19974831731





