采用一些簡單的編碼方式給密碼加密并不能有效地保護密碼。
當密碼以明文形式存儲在應用程序的屬性文件或其他數據存儲中時,可能會發生 Password Management 漏洞。程序員試圖通過編碼函數來遮蔽密碼,以修補 password management 漏洞,例如使用 64 位基址編碼方式,但都不能起到充分保護密碼的作用。
例:以下代碼從一個注冊表中讀取密碼,并利用該密碼創建一個新的網絡證書。
...
string value = regKey.GetValue(passKey).ToString());
byte[] decVal = Convert.FromBase64String(value);
NetworkCredential netCred =
new NetworkCredential(username,decVal.toString(),domain);
...
password 的值。而這給了心懷不軌的雇員利用這一信息破壞系統的機會。
[1] Standards Mapping - OWASP Top 10 2010 - (OWASP 2010) A7 Insecure Cryptographic Storage
[2] Standards Mapping - OWASP Top 10 2007 - (OWASP 2007) A8 Insecure Cryptographic Storage
[3] Standards Mapping - OWASP Top 10 2004 - (OWASP 2004) A8 Insecure Storage
[4] Standards Mapping - Security Technical Implementation Guide Version 3 - (STIG 3) APP3150.1 CAT II
[5] Standards Mapping - Security Technical Implementation Guide Version 3.4 - (STIG 3.4) APP3150.1 CAT II
[6] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 261
[7] How To:Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI Microsoft
[8] Standards Mapping - FIPS200 - (FISMA) IA
[9] Standards Mapping - Web Application Security Consortium 24 + 2 - (WASC 24 + 2) Information Leakage
[10] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 - (PCI 1.2) Requirement 3.4, Requirement 6.3.1.3, Requirement 6.5.8, Requirement 8.4
[11] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 - (PCI 2.0) Requirement 3.4, Requirement 6.5.3, Requirement 8.4
[12] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 - (PCI 1.1) Requirement 3.4, Requirement 6.5.8, Requirement 8.4