iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0
Security

你的程式真的安全嗎?從資安的角度做 code review系列 第 22

J - client-side authentication (不安全的身份驗證:鎖定機制脆弱)

  • 分享至 

  • xImage
  •  

不小心就偷懶了5天:3 反正也沒有完賽證明了,就把庫存整理整理發一發。最近發的幾篇觸及都超級低,有點難過哈哈哈。

下方程式碼片段全部都是擷取自 Secure Code Warrior 線上安全程式培訓平台,因為練習互動時的題目多半不會只有單一個檔案,可能涉及多個檔案、資料夾及多處地方修改,因此我的文章主要是針對最主要的區塊做修改及說明,若有不好理解的地方非常抱歉也還請見諒,也可以實際上去 Secure Code Warrior 玩玩看,搭配著互動,會更有感的學習哦~

J - client-side authentication(不安全的身份驗證:鎖定機制脆弱)

  • 形成原因:缺乏對暴力破解攻擊的防護、無效的密碼錯誤次數限制或鎖定策略配置不當。
  • 後果:攻擊者可以通過暴力破解獲取帳號密碼,導致數據洩露和未授權存取。
  • 實例:某網站允許用戶無限次嘗試登入,導致攻擊者可利用暴力破解工具猜測密碼。
  • 解決方法:
    • 限定次失敗後鎖定帳戶
    • 啟用多因素身份驗證
    • 密碼複雜度要求
    • 使用CAPTCHA等防止自動攻擊

第1題

錯誤區塊

private int passwordRetries = 0;
private int passwordWaitS = 0;
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台

解釋:
沒有限制使用者輸入密碼的次數及限制密碼輸入的時間,可能導致惡意使用者重複輸入密碼,進而透過暴力破解法獲取密碼。

主要修正方法

改成

private int passwordRetries = 3;
private int passwordWaitS = 60;
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台

解釋:
將密碼輸入次數設為3次,以及等待時間60秒後鎖定,防止惡意使用者猜測密碼。

J - use of short encryption keys(不安全的身份驗證:使用弱密碼)

  • 形成原因:用戶設置簡單或常見的密碼,缺乏強制的密碼複雜度要求。
  • 後果:容易被暴力破解或字典攻擊,導致帳戶被未授權訪問。
  • 實例:某公司員工大量使用 "123456" 或 "password" 作為登入密碼。
  • 解決方法:
    • 強制要求使用複雜密碼
    • 限制密碼長度
    • 定期更換密碼
    • 實施多因素身份驗證(MFA)
    • 使用密碼管理工具

第1題

錯誤區塊

if (pin.length() > 3) return;
pin += number;
addAsterixToDisplay();
if (pin.length() == 3) onPinInputCompleted();
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台

解釋:
設置密碼數最低為3真的太短了,建議應使用8位數以上中英夾雜的密碼。

主要修正方法

if (pin.length() > 8) return;
pin += number;
addAsterixToDisplay();
if (pin.length() == 8) onPinInputCompleted();
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台

解釋:
改成長一點就行


上一篇
J - applications backgrounding screenshot (意外的資料洩漏:應用程式背景螢幕擷取畫面)
下一篇
J - weak crypto algorithm (不合標準的密碼術:使用不安全/已棄用的演算法)
系列文
你的程式真的安全嗎?從資安的角度做 code review25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言