Persistent authentication 票據使用戶容易受到會話劫持攻擊。
FormsAuthentication.RedirectFromLoginPage() 方法會發布一個 authentication 票據,該票據使用戶可以在一段時期內保留經過驗證的身份。如果將該方法的第二參數設為 false,則調用該方法時會發布一個臨時 authentication 票據,其有效期在 web.config 中配置。如果將第二參數設為 true,該方法就會發布一個 persistent authentication 票據。在 .NET 2.0 中,persistent authentication 票據的有效期就是在 web.config 中配置的值;但在 .NET 1.1 中,persistent authentication 票據的有效期有一個滑稽的默認值 - 50 年。
允許 persistent authentication 票據長時期存在會使用戶和系統容易受到以下幾種攻擊:
對于注銷失敗的用戶,身份驗證票據漏洞延長了其暴露在會話劫持攻擊下的時間。
持久身份驗證票據增加了攻擊者猜中正確的會話標識符的機率。
當攻擊者成功地劫持了某個用戶的會話后,該漏洞將使攻擊者有更多的時間來盜取信息。
[1] Standards Mapping - OWASP Top 10 2004 - (OWASP 2004) A3 Broken Authentication and Session Management
[2] Standards Mapping - OWASP Top 10 2010 - (OWASP 2010) A3 Broken Authentication and Session Management
[3] Standards Mapping - OWASP Top 10 2007 - (OWASP 2007) A7 Broken Authentication and Session Management
[4] Standards Mapping - Security Technical Implementation Guide Version 3 - (STIG 3) APP3405 CAT I
[5] Standards Mapping - Security Technical Implementation Guide Version 3.4 - (STIG 3.4) APP3405 CAT I
[6] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 302
[7] Standards Mapping - Web Application Security Consortium 24 + 2 - (WASC 24 + 2) Insufficient Authentication
[8] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 - (PCI 1.1) Requirement 6.5.3
[9] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 - (PCI 1.2) Requirement 6.5.7
[10] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 - (PCI 2.0) Requirement 6.5.8
[11] Jeff Prosise The Keep Sites Running Smoothly By Avoiding These 10 Common ASP.NET Pitfalls