范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

你开发的app可能正饱受风险

  作者:brucevanfdm
  链接:https://www.jianshu.com/p/7f2202c18012
  1、前言
  近期facebook的隐私泄露事件再度唤起了公众对隐私的关注,在这个越来越重视个人隐私的时代里,安全早已是一个无法绕开的话题。
  作为一个开发人员,必须具备安全意识,掌握基础的安全知识,为打造更加安全的应用做出努力。本文浅谈Android客户端的安全问题,涉及组件、WebView、存储、传输、日志、混淆、应用加固等安全漏洞及防护策略,运用更加合理的配置与防护措施来提高应用的安全级别。2、组件安全
  规范安卓标准组件(Activity、Service、Receiver、Provider)的访问权限。
  这里提到的组件访问权限主要是指跨应用的进程间通信(IPC,Inter-Process Communication),开发者可以限定应用内的组件是否允许被其他应用调起,或接收来自外部应用的数据,或者访问我们的数据。并且必须对来自外部应用的数据做校验处理,避免来自外部攻击。如恶意调用组件、广播数据攻击、恶意访问数据等等。
  1. 设置权限开放属性:android:exported=["true" | "false"]
  exported属性为四大组件共有属性,其中含义大同小异。默认值由其包含 <intent-filter> 与否决定。若未包含<intent-filter>,默认为"false",若存在至少一个<intent-filter>,则默认值为"true"。
  在Activity中:
  表示是否允许外部应用组件启动。若为"false",则 Activity 只能由同一应用或同一用户 ID 的不同应用启动。
  在Service中:
  表示是否允许外部应用组件调用服务或与其进行交互。若为"false",则 Activity 只能由同一应用或同一用户 ID 的不同应用启动。
  在Receiver中:
  表示是否可以接收来自其应用程序之外的消息,如来自系统或或其他应用的广播。若为" false",则广播接收器只能接收具有相同用户ID的相同应用程序或应用程序的组件发送的消息。
  在Provider中:
  表示是否允许其他应用程序访问内容提供器。若为"false",则具有与Provider相同的用户ID(UID)的应用程序才能访问它。如果需要给其他应用程序提供内容,则应当限定读写权限。
  2. 配置自定义权限
  在AndroidManifest.xml中定义一个名称为com.fedming.demo.ACCESS的权限:
  android:protectionLevel="signature"表示签名保护级别,"签名"级别权限的内容对用户完全透明开放,而且只有由执行权限检查的应用的开发者签名的应用才可访问这些内容。
  应用到四大组件或者Application中android:permission="com.fedming.demo.ACCESS",即可实现对非同一签名应用的限制性访问。一般用于一些内部应用之间共享的私有组件。
  使用更加安全高效的LocalBroadcastManager
  区别基于Binder实现的BroadcastReceiver,LocalBroadcastManager 是基于Handler实现的,拥有更高的效率与安全性。安全性主要体现在数据仅限于应用内部传输,避免广播被拦截、伪造、篡改的风险。简单了解下用法:
  1.自定义BroadcastReceiverpublic class MyReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
  //Do SomeThing Here
  }
  }
  2. 注册ReceiverMyReceiver myReceiver = new MyReceiver();
  LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
  IntentFilter filter = new IntentFilter();
  filter.addAction("MY_ACTION");
  localBroadcastManager.registerReceiver(myReceiver, filter);
  3. 发送本地广播Bundle bundle = new Bundle();
  bundle.putParcelable("DATA", content);
  Intent intent = new Intent();
  intent.setAction("MY_ACTION");
  intent.putExtras(bundle);
  4. 在Activity销毁时取消注册@Override
  protected void onDestroy() {
  super.onDestroy();
  localBroadcastManager.unregisterReceiver(myReceiver);
  }
  Application相关属性配置
  1. debugable属性 android:debuggable=["true" | "false"]
  很多人说要在发布的时候手动设置该值为false,其实根据官方文档说明,默认值就是false。
  2. allowBackup属性 android:allowBackup=["true" | "false"]
  设置是否支持备份,默认值为true,应当慎重支持该属性,避免应用内数据通过备份造成的泄漏问题。3、WebView安全
  1. 谨慎支持JS功能,避免不必要的麻烦。
  提到对于Android4.2以下的JS任意代码执行漏洞,Android4.2以下?不必支持了吧!
  2. 请使用https的链接,第一是安全;第二是避免被恶心的运营商劫持,插入广告,影响用户体验。
  3. 处理file协议安全漏洞//若不需支持,则直接禁止 file 协议setAllowFileAccess(false);
  setAllowFileAccessFromFileURLs(false);
  setAllowUniversalAccessFromFileURLs(false);
  4. 密码明文保存漏洞
  由于webView默认开启密码保存功能,所以在用户输入密码时,会弹出提示框,询问用户是否保存。若选择保存,则密码会以明文形式保存到 /data/data/com.package.name/databases/webview.db中,这样就有被盗取密码的危险。所以我们应该禁止网页保存密码,设置WebSettings.setSavePassword(false)
  5. 开启安全浏览模式
  启用安全浏览模式后,WebView 将参考安全浏览的恶意软件和钓鱼网站数据库检查访问的 URL ,在用户打开之前给予危险提示,体验类似于Chrome浏览器。4、数据存储安全
  1. 秘钥及敏感信息
  此类配置应当妥善存放,不要在类中硬编码敏感信息,可以使用JNI将敏感信息写到Native层。
  2. SharePreferences
  首先不应当使用SharePreferences来存放敏感信息。存储一些配置信息时也要配置好访问权限,如私有的访问权限 MODE_PRIVATE,避免配置信息被篡改。
  3. 签名配置signingConfigs
  避免明文保存签名密码,可以将密码保存到本地,无需上传版本控制系统
  在app目录下建立一个不加入版本控制系统的gradle.properties文件:STORE_PASSWORD = qwer1234
  KEY_PASSWORD = demo1234
  KEY_ALIAS = demokey
  gradle将自动引入gradle.properties文件,可以直接在buld.gradle文件中使用:
  5、数据传输安全
  1. 使用HTTPS协议
  HTTPS的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的防护。可以说是非常基础的安全防护级别了。
  2. Android网络安全性配置
  该特性让应用可以在一个安全的声明性配置文件中灵活的自定义其网络安全设置,而无需修改应用代码,满足更高的安全性要求。
  在AndroidManifest.xml中配置
  以 PEM 或 DER 格式将自签署或非公共 CA 证书添加到 res/raw/my_ca。这让我回想起年前听到渗透测试结果时的恐惧,好家伙,自己装了个证书...
  这部分更多细节、功能请参考官方文档网络安全配置
  https://developer.android.com/training/articles/security-config.html?hl=zh-cn6、其他安全问题
  1. 日志输出
  日志是我们开发调试中不可或缺的一部分,但也是最容易泄露敏感信息的地方。所以,在我们发布应用时,应当关闭、甚至移除Log输出。
  2. 混淆、加固
  混淆代码,可以增加反编译破解的难度。但是我们在使用混淆功能时也要注意实体类、与JS交互的方法、第三方混淆配置等问题。
  应用加固也是近年来比较热门的应用安全解决方案,各大厂商都有自己的加固方案,常见的如腾讯乐固、360加固等等。
  3. 漏洞检测工具
  当项目代码量庞大以后,积累了较多的历史代码,人工检测代码工作量大。这时,漏洞检查工具就派上用场了。中文的漏洞检测工具中比较有名的就是360的FireLine。

ApacheLinkis(incubating)1。0。3版本发布Linkis1。0。3版本发布ApacheLinkis(incubating)1。0。3包含所有ProjectLinkis1。0。3。该版本是Linkis进入Apache孵化的第一Java8stream处理List交集差集去重等Java8的新特性Stream常用于处理集合,它不会改变集合原有的结构,优点是Stream的代码会比用for循环处理简洁不少本文主要说的是获取两个List集合的交集差集去重以及li想安装一套监控,流程是什么?费用多少?你好,我是老聂,专注安防监控11年,从我的角度谈一谈安装一套监控的流程和费用问题第1步根据客户安装的位置环境,选择合适的镜头毫米数和摄像头的像素,目前比较多的是数字网络监控100万哪个平台写文章报酬多?我从去年开始写书稿,签约了有书和喜马拉雅两个平台,一篇讲书稿60008000字,有书的稿费是2000一篇,喜马拉雅的要高些,按字数算稿费,一篇稿费大概六七千,这应该算是很高的稿费了工信部针对美撤销中国联通214牌照发表声明证券时报e公司讯,工信部针对美撤销中国联通214牌照发表声明。声明指出,我们注意到,美国联邦通信委员会(FCC)于当地时间1月27日,以国家安全为由决定撤销中国联通美洲公司的214斯微生物全面评估自身优劣势有针对性改进才能在mRNA领域领先新冠肺炎疫情肆虐全球逾两载,病毒不断迭代变异,传播力显著增强。面对奥密克戎毒株席卷全球,国家传染病医学中心主任复旦大学附属华山医院感染科主任张文宏表示,一个国家和地区需要强大的免疫山东大爷与支付宝重名,向马云索赔100万,最后获得赔偿没?点击关注,每天精彩不断!导读山东大爷与支付宝重名,向马云索赔100万,最后获得赔偿没?支付宝作为一款国民级的软件,在国内无疑是非常火爆的,现在我们几乎人人手机中都下载的有支付宝,因有人说穷人,是没有面子的。你怎么看?既然是有人说,说明存在但又不是所有人,我赞同。穷人被看不起穷人的那些人看不起,人间有,还不少。这些看不起人的人并一定是有多富的人,甚至自己也很穷。更有穷人自己看不起自己,自觉走不到真香?小米小屏旗舰跌到三千元内,骁龙8706。28黄金尺寸小米12系列已经发布有一段时间了,目前小米12系列一共带来了三款机型,分别是小米12X小米12和小米12Pro。其中小米12和小米12X是定位于小屏市场的旗舰手机,正面均搭载了一块硅谷和曼哈顿产业集群的形成美国19401980年,打造硅谷曼哈顿两大产业集群二战后美国形成了大量充满活力的世界级产业,以硅谷电子产业和曼哈顿金融业最有代表性。其他如底特律汽车波士顿的微电脑休斯敦的油田钻探仪新规来了!涉及就医出行缴税来源西藏发布进入2月一大批全国性新规将实施涉及就医出行缴税等来看看具体有哪些吧!01超100万用户平台赴国外上市须申报网络安全审查国家网信办等十三部门联合修订发布网络安全审查办法2
iOS14。5Beta7版本来了!性能有所提升!今日凌晨,苹果又推送了iOS14。5最新的测试版Beta7,本来以为3月31日推送了Beta6版本之后应该直接推送Rc版本,没想到今天又来了一个Beta7版本,看来离iOS14。5电脑GET新技能电脑优化加速?剁手党自有妙计!1hr关闭家庭组控制面板管理工具服务HomeGroupListener和HomeGroupProvider禁用。2hr关闭磁盘碎片整理自动维护计划任务电脑小常识2我来跟大伙儿说说如何用CMD命令关机1首先按WIN键(就是CTRL旁边那个键)R,打开运行对话框,如下图2在输入框里输入cmd,并按回车键,进入到下面窗口3然后输入,例如shutd电脑小常识2现在的用户在埋怨我们的电脑怎么越来越卡了呢。到底是因为什么呢。让我们来解析一下。第一个是因为你安装的杀毒软件(比如360)在你不知情的情况下默认给你安装漏洞了。特别是win7用户。我来推荐电脑这些电脑不错的。喜欢的朋友可以看一看,我也很喜欢这些。可是小编就是比较喜欢华硕笔记本。感觉用习惯了。用其他的反而不习惯。所以说萝卜青菜各有所爱呗。这台电脑的价格貌似跟Macbook帮乌龟养生卖塘里淤泥直播破蛋过程,这样的店竟年销2000万?直播镜头对准的是上百颗乌龟蛋,每个蛋壳上都做好了区分标记,背景立着一块牌子,牌子上标注着草龟蛋西北蛋北白蛋圆澳蛋红面蛋的价格以及孵化时间。评论区里不断有问题涌现,带着黑色手套的主播新疆女孩琪琪我曾是男生,变性后成了一位美妆主播直播间里的琪琪,妆容精致,眼角带笑,如果只看画面不听声音,你会觉得她就是一个好看的美妆主播。但是听她说话,你会开始诧异,这是男生还是女生?再一看名字,已是女生的琪琪。没错,琪琪是一这个千亿市场为何频出爆款?猫厕所2000元,配齐全套要上万再苦不能苦毛孩子!文姜雪芬编辑范婷婷自从买了一个绿色的猫背包后,彩彩成了小区里最拉风的铲屎官。每次带着宠物猫出门遛弯儿,上到60多岁的广场舞大妈,下到六七岁的小朋友,围着背包里的猫618预售第一天,代播主播赶场忙,这些商家卖爆了最近这段时间,主播们来得都比往常早。小李是杭州九堡一个直播基地楼下的便利店员工,现在是晚上九点,他擦拭着烤香肠的滚动烤炉,从冰箱里拿出冷冻的香肠,一根根放进去,顺手给旁边的关东煮锅4999元!三星在国内市场推出心意价机皇S21!就在昨晚,三星中国终于发布了国内市场的年度旗舰机三星GalaxyS21,此次S21和传闻一样推出了三个版本,分别为S21S21和S21Ultra。值得注意的是,今年S21的起售价可30岁萌妹子当电工,在抖音做网红,在电商平台当卖家消遣的归消遣,消费的归消费。文郑亚文编辑范婷婷身高一米五的陶媛身上,充满了反差感。她留着学生头,长相乖巧,却穿着工装迷彩裤,背着工具包,整日穿梭在毛坯房里,当一个水电安装工。她脸上