安全漏洞問題7:失效的身份認證和會話管理

inzaghi1984發表於2017-11-21

安全漏洞問題7:失效的身份認證和會話管理
1.1. 漏洞描述
應用程式的功能一般包含許可權管理和會話管理,但是由於應用程式設計不當,讓攻擊者可以竊取到密碼、金鑰、session tokens等資訊,進而冒充合法使用者身份,獲取敏感資訊或者進行惡意操作。
1.2. 漏洞危害
利用不安全的許可權管理和會話管理設計,惡意使用者可能會竊取或操縱使用者會話和 cookie,進而模仿合法使用者,一般來說,可能造成以下危害:
 竊取使用者憑證和會話資訊
 惡意使用者冒充使用者身份檢視或者變更記錄,甚至執行事務
 訪問未授權的頁面和資源
 執行超越許可權操作
1.3. 解決方案
 始終生成新的會話,供使用者成功認證時登入。
程式碼示例如下:
//Example 1:使用者登陸成功生成新ID
request.getSession().invalidate();//清空session
Cookie cookie = request.getCookies()[0];//獲取cookie
cookie.setMaxAge(0);//讓cookie過期
使用者再輸入資訊登入時,就會產生一個新的session了。

 防止使用者操縱會話標識。
具體措施如下:
 使用者密碼強度(普通-6位以上;重要-8位以上;極其重要:使用多種驗證方式)
 不使用簡單或可預期的密碼恢復問題
 登入頁面最好加密處理;登入出錯時不給太多的提示,使用統一的出錯提示;登入驗證成功後更換Session ID
 第一次登入強制修改密碼;對多次登入失敗的帳號進行短時鎖定;設定會話閒置超時。
 提供使用者登出退出功能,使用者關閉瀏覽器或者登出時,刪除使用者Session
 使用128位以上具備隨機性的SessionID,不在URL中顯示Session ID
 保護Cookie
在應用程式中為Cookie設定安全屬性:Secure flag和HttpOnly flag。


相關文章