敏感信息暴露给 UI 文本视图¶
ID: java/android/sensitive-text
Kind: path-problem
Security severity: 6.5
Severity: warning
Precision: medium
Tags:
- security
- external/cwe/cwe-200
Query suites:
- java-security-extended.qls
- java-security-and-quality.qls
密码等敏感信息不应显示在 UI 组件中,除非明确要求,以减轻窥肩攻击。
建议¶
对于包含敏感信息的文本字段,应将 inputType
设置为 textPassword
或类似值,以确保正确屏蔽。否则,必须显示的敏感数据应默认隐藏,并且仅基于明确的用户操作显示。
示例¶
在以下(错误)情况下,password
中的敏感信息会暴露给 TextView
。
TextView pwView = getViewById(R.id.pw_text);
pwView.setText("Your password is: " + password);
在以下(正确)情况下,用户必须按按钮才能显示敏感信息。
TextView pwView = findViewById(R.id.pw_text);
pwView.setVisibility(View.INVISIBLE);
pwView.setText("Your password is: " + password);
Button showButton = findViewById(R.id.show_pw_button);
showButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
pwView.setVisibility(View.VISIBLE);
}
});
参考¶
OWASP 移动应用安全:Android 数据存储 - UI 组件
常见弱点枚举:CWE-200。