网络安全攻防:Android系统安全之数据安全

 [[388878]]

1. 外部数据安全

外部存储通常是指将数据存入到设备的SD卡上。

外部存储是一种不安全的数据存储机制,因为存储到SD卡上的文件默认是提供给others读文件的权限的,设备上安装的其他App只要在其AndroidMenifest.xml上声明如下的语句。

  1. <uses-permission android:name='android.permission.WRITE_EXTERNAL_STORAGE'></uses-permission> 

那么该App就具有了对于SD卡的完全的读写权限,即是说一个App放在SD卡上的任何数据都可以被其他的App进行读/写操作,所以将重要数据存储在SD卡上具有相当大的安全隐患。

2. 内部数据安全

内部数据存储主要分为两种方式:SharedPreference存储和File存储。内部数据存储的安全问题主要需要注意的是创建的模式以及向文件中写入的内容。

SharedPreference 存储是一种轻量级的数据存储方式,它的本质是基于 XML 文件存储Key-Value键值对数据,通常用来存储一些简单的配置信息。

File存储即常说的文件(I/O)存储方法,常用于存储大量的数据。

内部数据存储通常较为安全,因为它们可以受到Android系统的安全机制的保护。

Android的安全机制本质上就是Linux的安全机制,系统会为在Android系统上运行的每一个App创建一个进程,并为该进程分配一个UID。Android系统将会为每一个App创建一个特定的目录/data/data/app_package_name,这个目录的权限只与UID相关,且只有UID关联的用户才有该目录相关的权限。

因此,在对应目录下生成的SharedPreference文件与File文件如果以正确的方式去创建将会受到Android系统权限机制的保护。

这个正确的创建方式是指文件创建的模式,SharedPreference与文件的创建模式主要有以下3种。

MODE_PRIVATE:默认的创建模式,该进程的 UID 对应的用户将会对该文件拥有完全的控制的权限,而其他UID的用户将没有权限去读/写文件。

MODE_WORLD_WRITABLE:该权限将允许设备上所有的App对于该文件拥有写的权限。

MODE_WORLD_READABLE:该权限将允许设备上所有的App对于该文件拥有读的权限。

为了确保内部数据的安全,有如下建议。

(1)创建文件时的权限控制

如果在创建文件的时候没有注意控制权限,那么该文件的内容将会被其他的应用程序所读取,这样就造成了用户相关信息的泄露,SharedPreference中存储的往往是一些免登token、session id等和用户身份息息相关的重要信息,因此,在创建的时候一定要注意选取好创建的模式;免登token也一定要具有时效性,否则与存储了明文的用户名和密码无异。

(2)SharedPreference中不要存入明文密码等重要信息

由于有Root的存在,那么Root过后的手机就打破了Linux提供的沙箱机制,那么无论以何种方式去创建SharedPreference都已经不再安全了,如果存储的是用户明文的密码,那么用户的密码将会泄露,因此,绝对不要向SharedPreference中写入任何无时效性的重要的数据。

3. 通信数据安全

这里的通信数据安全是指软件与软件、软件与网络服务器之间进行数据通信时,所引发的安全问题。

软件与软件的通信,Android有4大组件:Activity、Content Provider、Service、Broadcast Receiver。

这些如果在Androidmanifest.xml配置不当,会被其他应用调用,引起风险。Android应用内部的Activity、Service、Broadcast Receiver等,它们通过Intent通信,组件间需要通信就需要在Androidmanifest.xml文件中暴露组件。

Intent的两种基本用法:一种是显式的Intent,即在构造Intent对象时就指定接收者;另一种是隐式的Intent,即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁,有利于降低发送者和接收者之间的耦合。

带来的风险有恶意调用、恶意接收数据、仿冒应用、恶意发送广播、启动应用服务、调用组件、接收组件返回的数据、拦截有序广播等。

常见的有以下的防护手段。

(1)最小化组件暴露

不参与跨应用调用的组件添加android:exported=”false”属性,这个属性说明它是私有的,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。 

  1. <activity android:name=".LoginActivity" android:label="@string/app_name" android: screenOrientation="portrait" android:exported="false"> 

(2)设置组件访问权限

参与跨应用调用的组件或公开的广播、服务设置权限。

① 组件添加android:permission属性。 

  1. <activity android:name=".Another" androidandroid:label="@string/app_name"android:permission="com.test.custempermission"> </activity> 

② 声明属性 

  1. <permission android:description="test" android:label="test" androidandroid:name="com.test.custempermission"android:protectionLevel="normal"></permission> 

protectionLevel有4种级别:Normal、Dangerous、Signature、SignatureOrSystem。Signature、SignatureOrSystem级别只有相同签名时才能调用。

③ 调用组件者声明 

  1. <uses-permission android:name="com.test.custempermission"/> 

(3)暴露组件的代码检查

Android 提供各种 API 在运行时检查、执行、授予和撤销权限。这些 API 是android.content.Context类的一部分,这个类提供有关应用程序环境的全局信息。

网络数据通信可能面临的攻击是网络流量嗅探,如果网络上传没有加密的数据,网络嗅探就能截获到数据,ARP攻击可以轻松嗅探到账号、密码等。比较常见是通过HTTPS,HTTPS能有效地防止数据暴露、防止第三方截获应用的通信数据。

Android中实现HTTPS基本就这两种方式,一种是不验证证书,一种是有验证证书(预防钓鱼)。

第二种方式实现复杂一些,需要将cer证书转换成BKS类型。这种方式也只能简单地防止钓鱼,不能有效地防止钓鱼。防止钓鱼最终还是靠用户分辨,在正规渠道下载应用。应用证书也能起到验证客户端的功能,使用证书验证客户端不合适,如果使用证书验证客户端,证书必须存放在应用程序中或使用时下载,Android应用都是一个APK文件,很容易获取到里面的文件,如果是下载方式,更容易通过下载地址获取。如果想验证客户端的话,使用so文件封装数据更好。 

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/132342.html<

(0)
管理的头像管理
上一篇2025-02-26 23:31
下一篇 2025-02-26 23:32

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注