前言

随着官方对于用户隐私和数据使用上越来越严格,如何保护用户的信息也成为我们日常开发中需要关注的问题。下面给大家分享几个常见的点。

避免在设备上存储敏感信息

当我们需要在用户的设备上存储信息时:

  • 注意这两类数据:* 应用的密钥等私有数据* 用户的敏感信息

  • 不要共享未加密的敏感信息。如果需要存储,最好是先进行加密。在被破解的设备上,数据库什么的都能被读取。

  • 当我们需要存储密钥类的数据时(例如密码管理App),用keystore或keychains的加密。

虽然说最好是不要在本地存储用户敏感信息,但有时无法避免。那我们有哪些办法能加强安全性呢?

对于小的数据,现在有官方的 EncryptedSharedPreferences 来对内容加密。使用如下:

String masterKeyAlias = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC);SharedPreferences sharedPreferences = EncryptedSharedPreferences.create("secret_shared_prefs",masterKeyAlias,context,EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
);// 当作普通的SP用就可以了
SharedPreferences.Editor editor = sharedPreferences.edit(); 

对于数据流,可以用CipherInputStream和CipherOutputStream。他们可以用来封装普通的数据流,这样加解密的过程对于使用者来说就是“隐形”的。下面看看具体的例子:

// 初始化Cipher
final Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, key);// 封装加密数据流
OutputStream wrapped = new CipherOutputStream(out, cipher); 

CipherInputStream的使用也类似。

注意系统自动备份

大家应该在manifest.xml里看到过allowBackup这个设置。它有什么作用呢?看看官方文档的原话:

是否允许应用参与备份和恢复基础架构。如果将此属性设为 false,则永远不会为该应用执行备份或恢复,即使是采用全系统备份方法也不例外(这种备份方法通常会通过 adb 保存所有应用数据)。此属性的默认值为 true。

就是说在默认情况下,应用会允许第三方将应用的词有存储进行转移。这种设计的本意可能是为了方便用户备份自己的设备。但是黑客会怎样利用这个呢?在一个解锁了的设备上,他们可以轻易地把数据从应用的私有存储复制到外面来窃取信息。

解决办法当然就是把它设为allowBackup="false"。这样可以保证用户的数据不会被转移到读取权限更低的地方。

注意:从 Android 6.0 起,allowBackup 也会影响系统自动备份功能上传数据至Google Drive(类似于 iCloud)。

如果要使用系统的自动备份功能,需要在 Google Drive 账户的fullBackupContent设置里声明可以被备份的文件列表。

使用 secure flag

不知道大家有没有注意过,有些应用当你在输入支付信息(例如银行卡号)时,没法截屏。很大可能是因为他们的应用启用了LayoutParams.FLAG_SECURE,作用就是其他应用无法对此应用截屏或录像。当这类应用显示在任务栏内时,会默认显示空白页面而不是当前内容的截图。

简单的实现如下:

class MainActivity : AppCompatActivity() {...override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)}...
} 

从Android 5.0起,第三方应用只可以收集没有这个设置的应用的内容。想象一个场景,我们在应用A输入支付信息时,切去应用B发了条消息,如果应用A没有做这个设置,某些应用就可以偷偷截屏保存我们的支付信息。当然现在很多支付都有加强的验证,比如短信验证码。但是这类信息泄漏的话,还是会让人防不胜防。

总结

虽然我们日常开发不会天天接触到这些(就像CI/CD的设置),但是当我们实现了新功能需要发布时,对信息的安全性做一些检查,既是对用户负责,说不定也给自己和公司免去一些潜在的麻烦。

前端安全-CSRF攻击,sql注入,点击劫持相关推荐

  1. 万字讲解9种Web应用攻击与防护安全。XSS、CSRF、SQL注入等是如何实现的

    OWASP(开放Web软体安全项目- Open Web Application Security Project) 是一个开源的.非盈利的全球性安全组织,致力于应用软件的安全研究.使命 是使应用软件更 ...

  2. android 访问服务器sql_XSS 攻击、CSRF 攻击、SQL 注入、流量劫持(DNS 劫持、HTTP 劫持)—— 浏览器安全

    今天看了 jsliang 大佬关于网络安全的文章,为了加深一下印象,自己动手写一下. 主要参考文章:网络安全 --- jsliang XSS攻击 XSS(Cross Site Script)跨站脚本攻 ...

  3. 网络(14)-Web站点如何防范XSS、CSRF、SQL注入攻击?

    一.XSS跨站脚本攻击 XSS跨站脚本攻击指攻击者在网页中嵌入客户端脚本(例如JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的,比如获取用户的Cookie ...

  4. 常见web攻击(sql注入,xss攻击,csrf攻击)

    sql注入攻击 危害 方式:通过表单提交加入特殊字符 如:' OR 1=1#' 防范:用django的ORM,就大可不必考虑这个问题,   如果自己写,要用正则和其他方式进行过滤 xss(Cross ...

  5. CSRF, XSS, Sql注入原理和处理方案

    CSRF 含义 CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Click Attack"或者Session Riding,通常缩写 ...

  6. 注入攻击-SQL注入和代码注入

    注入攻击 OWASP将注入攻击和跨站脚本攻击(XSS)列入网络应用程序十大常见安全风险.实际上,它们会一起出现,因为 XSS 攻击依赖于注入攻击的成功.虽然这是最明显的组合关系,但是注入攻击带来的不仅 ...

  7. 前端参数效验防止sql注入的方法

    最近做完项目时,甲方对系统有要过安全等保三级的要求,这里针对我所编写的模块遇到的前端代码扫描出现的sql注入问题,给出部分解决方案. 错误示例 请求api时,参数未加效验: let _obj ={pa ...

  8. SQL注入攻击(SQL注入(SQLi)攻击)-报错注入

    页面没有显示位 , 但有数据库的报错信息时 , 可使用报错注入 报错注入是最常用的注入方式 , 也是使用起来最方便(我觉得)的一种注入方式 updatexml(1,'~',3); 第二个参数包含特殊字 ...

  9. 第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击...

    第三百九十二节,Django+Xadmin打造上线标准的在线教育平台-sql注入攻击,xss攻击,csrf攻击 sql注入攻击 也就是黑客通过表单提交的地方,在表单里输入了sql语句,就是通过SQL语 ...

最新文章

  1. linux snmp更改端口号,snmpd服务无法更改默认端口
  2. Android 聊天软件客户端
  3. .NET Core中文分词组件jieba.NET Core
  4. margin的简单应用
  5. refreshtoken用mysql_微信access_token和refresh_token保存于redis
  6. iPhone X Web 设计
  7. python getattr函数_Python中的getattr()函数详解
  8. java 条件 等待_java – 如何唤醒等待相同条件的所有线程?
  9. linux 内存查看_Linux终端查看最消耗CPU内存的进程
  10. HPUX11.31环境下,更换HBA卡后的配置操作(HP-UX)
  11. linux脚本中如何调用函数,在Linux中如何在Perl脚本中调用函数(在shell脚本中定义)...
  12. 2008 Asia Harbin Regional Contest Online Turn the corner (三分)
  13. 群晖NAS教程(十五)、利用Web Station安装typecho博客
  14. excel软件php函数,文员常用的excel函数
  15. 一文读懂AB测试原理及样本量计算的Python实现
  16. CentOS7安装Pure-ftpd
  17. 第4章-模板引擎Jade和Handlebars-4.2.Jade的语法和特性
  18. 集合类 Java中的集合类解析和一些有深入的面试题
  19. HCIE-Routing Switching V3.0模拟试题.docx
  20. 【原创】软件测试经验图谱硬技能之业务逻辑

热门文章

  1. 20201020 泰克示波器改时间
  2. Python+selenium+chromedriver实现自动登录微博并发微博
  3. 用python爬取有道翻译遇到反爬,3分钟反反爬绕过其反爬
  4. 从一个用户expdp导出再impdp导入到另一个用户
  5. 数据库连接,上手零基础
  6. 外贸学会钓鱼的方法,才会明白报价的道理
  7. 关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并)
  8. linux系统RootKit木马查杀
  9. c语言cgi json,CGI程序学习(4)-C程序中JSON解析
  10. 学习ALINX_ZYNQ(7Z020开发板SDK)第二天——RS485串口