iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0
Security

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

J - applications backgrounding screenshot (意外的資料洩漏:應用程式背景螢幕擷取畫面)

  • 分享至 

  • xImage
  •  

這邊開始是為了打資安戰士挑戰賽所做的彩蛋計畫練習,語言和框架是 Java Android SDK,再聲明一次彩蛋計畫的題目和比賽是不一樣的,我在IThome鐵人賽的文章也不會出現當時比賽的題目;另外因為當時這部分的筆記寫的比較趕比較凌亂,所以部分內容會由Chatgpt輔助撰寫,還請見諒。

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

J - applications backgrounding screenshot (意外的資料洩漏:應用程式背景螢幕擷取畫面)

  • 形成原因:Java開發的Android應用程式在進入背景模式時,系統會自動擷取應用程式當前的畫面,並顯示在「最近應用」列表中。若應用程式未主動阻止這些擷取,敏感資訊(如登入頁面、金融數據等)可能會被曝光。
  • 後果:敏感資訊(例如,信用卡號、密碼、個人照片等)洩漏。
  • 實例:當使用者在進行線上交易付款時,應用程式進入背景,系統會自動截取包含信用卡卡號、到期日、驗證碼等資訊的畫面,這些畫面可能被非授權者在「最近應用」中查看。
  • 解決方法:
    • 在 Activity 的onCreate()方法中加入FLAG_SECURE防止系統擷取畫面
    • 遮罩敏感資訊
    • 當應用進入背景狀態onPause()onStop(),應主動隱藏或清除當前畫面的敏感資訊

第1題

錯誤區塊

protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		accessToken = getIntent().getStringExtra("accessToken");
		userId = getIntent().getStringExtra("userId");
		if (TextUtils.isEmpty(accessToken) || TextUtils.isEmpty(userId)) {
			finish();
			return;
		}
		setContentView(R.layout.activity_home);
		Button btnLogout = (Button) findViewById(R.id.btnLogout);
		btnLogout.setOnClickListener(this);
		txtAccountNumber = (TextView) findViewById(R.id.txtAccountNumber);
		txtBalance = (TextView) findViewById(R.id.txtBalance);
		txtDOB = (TextView) findViewById(R.id.txtDOB);
		getProfileDataFromServer();
}
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台

解釋:
在這段程式碼中,txtAccountNumber, txtBalance, 和 txtDOB 都是可能包含敏感資訊的變數。這些資訊如果沒有進行適當的遮蔽或保護(例如部分隱藏賬號或生日資料),它們很容易被用戶無意間暴露給旁觀者。

主要修正方法

import android.view.WindowManager;
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,WindowManager.LayoutParams.FLAG_SECURE);
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台

解釋:
在 Activity 的onCreate()方法中加入FLAG_SECURE防止系統擷取畫面


上一篇
第三屆資安戰士挑戰賽和達人養成計劃 心得分享
下一篇
J - client-side authentication (不安全的身份驗證:鎖定機制脆弱)
系列文
你的程式真的安全嗎?從資安的角度做 code review25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言