代码编织梦想

安全检测出的问题如下:
3.3.2 四大组件配置安全规范检测
3.3.2.1 Activity 最小化特权检测
检测目的
检测应用 Activity 权限攻击
重要等级
危害
应用组件如果存在权限攻击漏洞则该组件能够被外部的其他组件直接调
用,这样就可能产生泄露隐私数据或者应用程序崩溃等漏洞。恶意应用
可以传递有害数据或者命令给受害的 Broadcast Receiver ,而 Receiver
收到有害的数据或者命令时可能泄露数据或者做一些不当的操作。也有
可能 Receiver 去开启其它的 Activity 或者 Service ,从而产生更大的危
害。 Activity 被恶意应用开启,可能有一下危害:修改程序的状态或者
数据;用户被欺骗(比如用户点击一个恶意应用的 Setting ,恶意应用开
启受害应用的设置,此时用户以为在修改恶意应用的 Setting ,这样受害
应用的设置可能被用户无意识的修改);被调用的 Activity 可能返回隐
私的信息给恶意应用,造成数据泄露;可能会是应用程序崩溃,造成拒
绝服务等漏洞。
检测结果
高危
检测详情
总共检测 Activity 配置代码【 4 】条;
检测到未进行正确配置的代码【 1 】条;
检测到正确配置的代码【 3 】条
未进行正确配置的代码为:
activity android:exported="true"
android:name="cn.jpush.android.service.JNotifyActivity"
android:taskAffinity="jpush.custom" android:theme="@android:01030010"
正确 Activity 组件配置的代码为:
activity android:exported="false" android:launchMode="3"
android:name="de.appplant.cordova.plugin.localnotification.ClickReceiver"
android:theme="@android:0103000F"
activity android:exported="false"
android:name="cn.jpush.android.ui.PopWinActivity" 同智签安全检测评估报告
android:theme="@7F0B0000"
activity android:configChanges="0x000000A0" android:exported="false"
android:name="cn.jpush.android.ui.PushActivity"
android:theme="@android:01030006"
解决方案
设置组件 EXPORTED=False 并且尽量不包含任何的 Intent Filter
3.3.2.2 Service 最小化特权检测
检测目的
检测应用 Service 权限
重要等级
危害
Service 执行的操作一般比较敏感,比如更新数据库、提供事件通知等,
因此一定要确保访问 Service 的组件有一定的权限。否则可能被恶意应用
提供获取重要信息的漏洞,没有声明任何权限的应用即可在没有任何提
示的情况下启动该服务,完成该服务所作操作,对系统安全性产生极大
影响。
检测结果
中危
检测详情
总共检测 service 身份配置代码【 3 】条;
检测到未进行正确配置的代码【 2 】条;
检测到正确配置的代码【 1 】条;
未进行正确配置的代码为:
service android:enabled="true" android:exported="true"
android:name="cn.jpush.android.service.DaemonService"
service android:name="cn.jiguang.cordova.push.PushService"
android:process=":pushcore"
正确 service 组件配置的代码为:
service android:exported="false"
android:name="cn.jpush.android.service.PushService"
android:process=":pushcore"
解决方案
在主配文件里面给 Service 设置权限,一般设置 Exported 属性为
False 。不要轻易给未知名的 Service 传递 Intent
3.3.2.3 Broadcast Receiver 最小化特权检测
检测目的
检测应用 Broadcast Receiver
重要等级
危害
Broadcast Receiver 设计的初衷是从全局考虑可以方便应用程序和系统、 同智签安全检测评估报告
应用程序之间、应用程序内的通信,所以对单个应用程序而言 Broadcast
Receiver 是存在安全性问题的,比如恶意程序可以不断的去发送你所接
收的广播,这样会造成应用被攻击,有可能导致应用直接退出,处理逻
辑出错等问题。
检测结果
高危
检测详情
总共检测 receiver 配置代码【 7 】条;
检测到未进行正确配置的代码【 1 】条;
检测到正确配置的代码【 6 】条;
未进行正确配置的代码为:
receiver android:name="cn.jiguang.cordova.push.JPushEventReceiver"
正确 receiver 组件配置的代码为:
receiver android:exported="false"
android:name="de.appplant.cordova.plugin.localnotification.TriggerReceiver
"
receiver android:exported="false"
android:name="de.appplant.cordova.plugin.localnotification.ClearReceiver"
receiver android:enabled="true" android:exported="false"
android:name="cn.jpush.android.service.PushReceiver"
receiver android:exported="false"
android:name="cn.jpush.android.service.AlarmReceiver"
receiver android:exported="false"
android:name="cn.jpush.android.service.SchedulerReceiver"
...
此处省略【 1 】条数据
...
解决方案
广播发送方通常选择给每个发送 Broadcast Intent 授予 Android 权限;
接收方不但需要符合 Intent filter 的接收条件,还要求 Broadcast
Receiver 也必须具有特定权限(给发送方授予权限要一致)才能接收
使 LocalBroadcastManager LocalBroadcastManager 只会将广播限定在 当前应用程序中。
以上问题都是未设置 android:exported="false"导致的,如果将true改为false或者默认设置false属性,对极光推送无影响,只是可能影响页面的拉起功能,比如点击通知栏消息拉起页面。如果安全检测要求很严格的话,可以设置为false。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_16497617/article/details/108050994

Cordova 转换多端应用 (angular 配置为例)-爱代码爱编程

Cordova Cordova 是用于使用HTML,CSS和JS构建移动应用的平台。我们可以认为Cordova是一个容器,用于将我们的网络应用程序与本机移动功能连接。默认情况下,Web应用程序不能使用本机移动功能。这就是Cordova进来的地方。它为网络应用和移动设备之间的连接提供了桥梁。 通过使用cordova,我们可以使混合移动应用程序,可以使用摄像

cordova插件(二)-hot-code-push-plugin-爱代码爱编程

插件介绍 基于cordova框架,我们可以将h5资源打包成app。然后通过热更新插件可以实现h5资源的热更新,而不用重新发布到应用市场,让客户再从应用市场下载。 插件的使用 插件安装 cordova plugin add cordova-hot-code-push-plugin 从图片可以得知,我们还需要安装cordova-hot-code

Ionic实战七:实现人脸识别认证方案-爱代码爱编程

项目的需求是实现人脸对比及活体检测功能,花钱越少越好,一开始考虑的是移动端的H5方案,看了下需要对接公安的api接口,这个价格太高了,放弃了,最终是移动端拍照上传,调用百度api实现人脸对比及活体检测功能。 ionic中接入相机插件后实现拍照方法如下: ionic cordova plugin add cordova-plugin-camera npm

at org.apache.cordova.camera.CordovaUri.getFileNameFromUri(CordovaUri.java:98)-爱代码爱编程

E/PluginManager: Uncaught exception from plugin java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 at org.apache.cordova.camera.CordovaUri.getFileNameFromUri(

Cordova 事件简介及代码演示示例-爱代码爱编程

Cordova 事件 Cordova 一共有 个事件 deviceready cordova 加载完成事件pause 程序进入后台resume 从后台进入程序backbutton 按下返回按钮menubutton 按下菜单按钮searchbutton 按下搜索按钮startcallbutton 按下通话按钮endcallbutton 按下挂断通话按钮v

Cordova 插件的介绍及安装使用-爱代码爱编程

Cordova 插件使用 Battery Status 电池插件 cordova 对于插件的使用,需要先进行安装 安装插件 cordova plugin add cordova-plugin-battery-status该插件可以用于监视设备电池的变化全局提供了三个时间 batterystatus 表示电池状态发生改变(至少1%电量变化)或者

No component factory found for Tab2Page. Did you add it to @NgModule.entryComponents?-爱代码爱编程

今天用 ionic 弹出模态框时报错: No component factory found for Tab2Page. Did you add it to @NgModule.entryComponents? 这主要是因为 ionic 使用 angular 的路由懒加载方式,即用 loadChildren,如果用 component 方式则不会用这种问

Ionic实战七:实现人脸识别认证方案-爱代码爱编程

项目的需求是实现人脸对比及活体检测功能,花钱越少越好,一开始考虑的是移动端的H5方案,看了下需要对接公安的api接口,这个价格太高了,放弃了,最终是移动端拍照上传,调用百度api实现人脸对比及活体检测功能。 ionic中接入相机插件后实现拍照方法如下: ionic cordova plugin add cordova-plugin-camera npm

Ionic实战八:版本更新(Android及IOS)-爱代码爱编程

获取当前应用版本号 //config.xml中version值的获取:1.0.1 this.appVersion.getVersionNumber().then(data => { console.log("appVersion:" + data); }); //将上面version值中的点号用数字零表示:10001

Ionic实战五:应用数据清理及应用卸载数据存储方案记录-爱代码爱编程

文章目录 1.安装文件插件2.在使用的页面引入3.在app.module.ts中的providers中加入4.在使用的页面初始化5.utilTools中封装的方法6.getAppPackageName为当前应用的包名7.getNewPriDataFromJar为从插件中获取新的密钥对数据8.服务器根据插件产生的部分私钥产生公钥值,移动端保存公钥值9

用 github 搭建自己的 angular 小网站-爱代码爱编程

我使用的是基于 angular 的 ionic 框架,因为组件很丰富,并不需要自己去优化页面。 gitHub 下新建 reallyEasy 项目 点击 settings 第一选项 Options 拉到最后 GitHub Pages 配置好点 Save 最上面是你的网站网址 新建 ionic 项目 更改 index.html 文件

ionic页面返回不刷新问题-爱代码爱编程

前言: 本页面回到上一个页面,实现上一个页面刷新算是ionic4比较难的部分了,其中踩了很多的坑,今天就彻彻底底的来解决一下这个问题! 场景直现 从页面A进入页面B,页面B进行操作后会影响页面A数据,此时返回A页面,页面数据没有重新加载 为什么会是难点 因为ionic为了提高性能将页面存到了缓存中,不能触发页面刷新,只是将上一个页面显示出来。像我