在Android应用架构里,身份安全并不是登录页面加一把锁那么简单。Android Identity Security身份安全测试关注的是整个信任链:从用户凭证采集、令牌下发、本地保存,到每次请求时服务端如何校验主体合法性。如果开发把用户角色写进本地SharedPreferences然后直接信任,攻击者反编译改值就能提权。正确的做法是由服务端在会话中维护主体标识,客户端每次携带不可篡改的签名令牌,服务端独立验签并查询权限表。

身份令牌的签发与校验机制测试
令牌签发环节最容易出现的问题是使用弱随机或固定密钥签名。在Android Identity Security身份安全测试中,我们需要确认服务端采用的JWT或自研令牌是否使用了足够强度的非对称算法,比如RS256,而不是把私钥打包进APK用HS256自签。一旦对称密钥随客户端分发,逆向拿到密钥就能伪造任意用户身份。测试人员可以用静态分析提取签名逻辑,再尝试本地生成令牌访问接口。
校验环节要重点看服务端是否做了完整的声明验证。很多系统只比对令牌里的user_id字段,却忽略了iss、exp以及受众aud。这会带来重放和越权风险。我们可以用如下代码模拟一个过期但被篡改的令牌请求,观察返回状态:
import requests
import jwt
# 假设已泄露的对称密钥,用于演示伪造
secret = 'weak_secret_from_apk'
fake_token = jwt.encode({
'user_id': 1001,
'role': 'admin',
'exp': 9999999999
}, secret, algorithm='HS256')
resp = requests.get(
'https://api.ipipp.com/v1/user/profile',
headers={'Authorization': 'Bearer ' + fake_token}
)
print(resp.status_code, resp.json())
如果接口返回200且带出他人数据,说明服务端未正确校验签名来源或权限边界。身份安全测试必须覆盖这类场景,并且要在不同网络环境下抓包确认令牌传输是否走TLS双向认证,防止中间人替换。
本地存储与进程间通信的越权风险
Android应用常把身份相关信息写入内部存储或借助ContentProvider对外暴露。Android Identity Security身份安全测试要检查<provider>组件的exported属性,若误设为true且未做权限控制,其他应用就能直接查询登录态。我们使用adb命令配合自定义调用验证跨应用读取:
adb shell content query --uri content://com.example.app.identity/Token
上述命令若直接回显令牌,就证明存在越权暴露。另外在本地文件上,测试需确认数据库或XML是否加密。明文存储的OAuth刷新令牌一旦被root设备提取,攻击者可长期冒用身份。推荐方案是使用Android Keystore生成密钥,结合EncryptedSharedPreferences。
进程间通信方面,BroadcastReceiver若以明文广播身份变更事件,恶意应用可注册接收窃取。测试时要反编译清单文件看<receiver>声明,并动态注入伪造广播看接收方是否盲目信任。只有把身份操作收敛在单一可信进程,并校验调用者签名,才能降低本地越权面。
伪造请求与横向越权实战验证
横向越权指A用户拿自己的令牌去访问B用户资源。Android Identity Security身份安全测试最核心的一步,就是用两个不同账号的令牌互换请求参数中的资源ID。如下示例展示用账号A的头部访问账号B的订单:
token_a = 'eyJhbGciOiJIUzI1Ni...' # A用户令牌
resp = requests.get(
'https://api.ipipp.com/v1/order/88723',
headers={'Authorization': 'Bearer ' + token_a}
)
print('status:', resp.status_code)
print('body:', resp.text)
若返回200且订单归属并非A,便坐实了越权漏洞。很多团队只在UI层隐藏按钮,但接口未校验资源与令牌主体的绑定关系。测试报告应明确写出缺失的owner_check逻辑,并建议服务端在SQL层加入where user_id = :current_uid条件。
除手动测试外,还可以编写自动化遍历脚本,批量替换ID并统计异常响应比例。结合模糊测试工具修改令牌字段,观察服务端是否统一返回403而非数据。只有把身份安全测试常态化,才能在版本迭代中持续防住伪造与越权。
Android_Identity_Security身份安全测试越权防护修改时间:2026-08-16 22:30:33