安全问题并不单纯是技术问题,对网络信息传递、用户隐私以及敏感信息的保护不是单纯依赖各种加密算法就可以绝对保障的,首要问题是提升安全意识。如果我们执迷于通过对上述信息的加密来解决安全性问题,很可能被一些别有用心的人用简单粗暴的方式给愚弄,举个例子,Android 系统通过动态权限申请来保护用户的位置信息不被泄漏,结果在前不久被爆出有应用通过解析照片信息里的时间和位置信息来获取用户在某一时刻的位置信息,谷歌也在发现了这个问题后做了及时补救,但是这个问题显然已经存在相当长的时间了;再比如说,我们通过HTTPS协议以及一些加密算法来保证用户的账号密码不被外部恶意程序截获并破译,假设HTTPS是绝对安全的,对账号和密码的加密也是不可破解的,但是如果是恶意软件在终端开启录屏或截屏功能,直接把用户输入账号密码的过程记录下来了呢?如果用户的手机已经在一个不安全的环境下运行,那么我们在传输阶段做的再多努力也是徒劳的,针对盗录屏、截屏的问题 Android 给出了解决方案。
在将要输入敏感信息前调用:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
设置后录屏得到的屏幕影像将会是黑色的。
如果我们在密码的输入框上设置了android:inputType="textPassword"
属性(一般情况下也是如此),在输入框获得焦点后录屏、截屏也会进入黑屏状态,但是这可能会依赖系统对安全键盘的设置,所以这种方式不是万无一失的,想要防止敏感信息被录屏、截屏还是要选择添加上面的设置。
文中的两个问题只是个引子,核心还是想提醒我们在提升网络和软件安全方面不要只关注技术手段,提升安全意识才能做到“魔高一尺道高一丈”。