www.30abysses.com / TWY / 2016 / 11 / 21 / CS: C# `System.Valuetype.GetHashCode()`  潛在效能、安全問題BALANCE and EQUILIBRIUMSystem.Valuetype.GetHashCode()  潛在效能、安全問題ValueType  的 `GetHashCode()  預設實作是把所有欄位(field) 大鍋炒成
雜湊(hash)值;有看過些說法主張這可能造成潛在的效能問題外,然而,更嚴重的
是如其原碼註解 所指出的,這多少會在某種程度上把敏感資訊透露出去,也
就是有 潛在的安全問題 。
// The default implementation of GetHashCode() for all value types.
// Note that this implementation reveals the value of the fields.
// So if the value type contains any sensitive information it should
// implement its own GetHashCode().
FCIMPL1(INT32, ValueTypeHelper::GetHashCode, Object* objUNSAFE)
是故,原碼註解主張
若此 value type 含有敏感資訊,那它應該為
GetHashCode()提供自己的實 作版本。
然而,很遺憾的, System.Valuetype.GetHashCode() 的官方文件
目前(2016-11-25)並沒有特別提醒這件事。
        
            [
            Contact us
            |
            facebook
            |
            hello@30abysses.com
            |
            聯絡我們
            ]
        
    
            
                CS: C# `System.Valuetype.GetHashCode()`  潛在效能、安全問題
                by
                TW Yang <twy@30abysses.com>
                
                is licensed under a
                Creative Commons Attribution 4.0 International License
                (CC-BY-4.0).