zoukankan      html  css  js  c++  java
  • Android 安全提示 笔记

     
    http://developer.android.com/training/articles/security-tips.html
    1.数据存储
    内部存储
    internal storage存储的数据,只能由App自己访问。
    如果是敏感数据,推荐使用KeyStore。
    外部存储
    外部存储,例如SD卡,任何app都可以读写,也可以被用户移除,所以不能用来存储敏感数据。
    如果处理来自外部存储的数据,必须要做验证。
    强烈建议不要存储可执行文件,或者用于动态加载的类文件。如果一定要这么做,这些文件必须签名并加密。
    Content Provider
    他提供了一种结构化的存储机制来限制自己的app或者其他app访问限定的内容,
    如果你不打算让其他的app访问你的content provider,设置android:exported=false
    如果创建了Content Provider给其他app使用,必须指明相应的权限。
    如果使用content provider在几个app之间共享数据,需要android:protectionLevel =signature

    2.权限
    请求权限
    尽可能的减少请求的权限,例如数据保存在内部存储区而不是保存在外部存储区。
    创建权限
    尽量少定义一些权限。
    如果定义权限,必须有一个字符串明确的告诉用户做了什么,字符串必须翻译,用户可以拒绝这个要求而不安装app。

    3.网络
    IP网络
    因为移动设备经常频繁的连接没有加密的网络,例如公共Wi-Fi热点,所以推荐使用Https而不是Http。
    http访问推荐使用HttpsURLConnection,Socket访问,推荐使用SSLSocket。
    App使用localHost来处理进程间通讯,这种方式并不推荐,因为可以被其他app利用。最好使用Service。
    不要信赖http或者其他非安全协议下载的数据。
    移动数据
    不要用短信来存储或者传递敏感数据,因为其他App可以读取短信。

    4.验证输入
    如果使用native code,从网络、其他进程传过来的数据都可能引入安全问题。
    注意访问script或者sql 注入攻击。

    5.处理用户数据
    尽量避免存储或者传输用户敏感的数据,例如email.
    如果需要访问用户名密码之类的信息,可能需要提供隐私保护策略给用户。
    请不要暴露敏感数据给第三方不信任的App。
    如果需要GUID,自己创建一个,不要使用IMEI或者手机序列号。
    慎重使用设备log,log也是一种共享资源,其他App可以请求Read_Logs权限来访问log。

    6.WebView
    webView会加载HTML和Javascript,可能引入跨站点攻击。如果不需要使用javascript,请不要调用setJavaScriptEnabled().
    addJavaScriptInterface() 最好只给自己的App使用。
    如果使用webView访问了敏感数据,记得清理缓存。

    7.凭据
    尽量不要向用户请求Credentials。
    如果可能的话,尽量不要在设备上存储用户名和密码,推荐使用短期有效的token。
    使用AccountManager来处理一些凭据信息,或者Keystore,Keychain。

    8.加密
    如果需要自定义加密算法,推荐使用系统的AES胡总和RSA

    9.进程间通信
    推荐使用Intent,Binder,Messenger,Servier,BroadCast,而不是传统的linux技术实现。

    10.Intent
    如果Intent传递的数据包含敏感信息,需要制定权限,保证拥有权限的app可以接收。

    11.Service
    默认情况下,Service不要export,不要被其他App调用。
    如果需要,请加上权限,
    调用之前,可以用 checkCallingPermission() 检查一下

    12 binder and messenger
    定义权限和接口

    13. broadcast receiver
    这个可以被任何一个app调用,注意定义权限

    14 动态加载代码
    强烈建议不要从外部动态加载代码,如果需要,请签名并使用DexClassLoader.。

    15 虚拟机安全
    不推荐动态加载代码

    16 Native Code
    尽量使用Android SDK,实在不行,使用Android NDK。

  • 相关阅读:
    [TimLinux] CSS 纯CSS实现动画展开/收起功能
    [TimLinux] CSS pre超长自动换行
    j2ee之struts2表单细节处理
    j2ee之struts2的国际化数据方式
    j2ee之struts2拦截器()
    j2ee之struts2文件下载
    j2ee之struts2文件上传
    j2ee国际化数据方式
    j2ee监听器的实现及配置方法
    j2ee过滤器实现的主要代码
  • 原文地址:https://www.cnblogs.com/xiaokang088/p/4185188.html
Copyright © 2011-2022 走看看