首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

安全性測驗:測試您的安全性 IQ (五) Silverlight 客戶端代碼風險

     編輯:關於C語言

錯誤代碼 #10 (Silverlight CLR C#)


bool VerifyCode(string discountCode)
{
    SHA1Managed hash = new SHA1Managed();
    byte[] codeHash = hash.ComputeHash(Encoding.Unicode.GetBytes(discountCode));
    byte[] secretCode = new byte[] { 116,46,130,122,36,234,158,125,163,122,157,186,64,142,51,153,113,79,1,42 };
    if (codeHash.Length != secretCode.Length) return false;
    for (int i = 0; i < codeHash.Length; i++)
        if (codeHash[i] != secretCode[i]) return false;
    WebServiceSoapClient client = new WebServiceSoapClient();
    client.ApplyDiscountCode();
    return true;
}

安全性問題分析

  1. 使用 SHA-1:已被 SDL 禁止,應改用 SHA256Managed 實作 SHA-256。
  2. 未鹽化雜湊:原始雜湊極易被彩虹表破解,應加鹽並使用 PBKDF2 等慢速雜湊。
  3. 客戶端執行驗證邏輯:最嚴重錯誤。Silverlight 代碼運行於使用者瀏覽器,攻擊者可附加偵錯器、修改變數、繞過驗證直接呼叫 Web Service。絕不可在客戶端執行特權決策或嵌入機密資訊。

評分建議

  • 發現 SHA-1 問題:+1 分
  • 發現未鹽化雜湊:+1 分
  • 發現客戶端執行風險:+1 分

Web Forms 代碼運行於伺服器,Silverlight 運行於客戶端,兩者信任邊界截然不同,切勿混淆。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved