跳过内容

MASTG-TEST-0002: 测试本地存储的输入验证

此测试即将更新

此测试目前可使用,但将作为新的 OWASP MASTG v2 指南 的一部分进行全面修订。

请通过提交PR帮助我们:MASTG v1->v2 MASTG-TEST-0002:本地存储输入验证测试(android)

发送反馈

概述

对于任何可公开访问的数据存储,任何进程都可以覆盖数据。这意味着在再次读取数据时,需要立即应用输入验证。

注意:对于root设备上的私有可访问数据也是如此

静态分析

使用Shared Preferences

当您使用SharedPreferences.Editor读取或写入int/boolean/long值时,您无法检查数据是否被覆盖。但是:它很难用于实际攻击,除了链接这些值(例如,没有可以接管控制流的其他漏洞可以打包)。对于StringStringSet,您应该小心如何解释数据。使用基于反射的持久性?查看Android上的“测试对象持久性”部分,了解应如何验证。使用SharedPreferences.Editor存储和读取证书或密钥?请确保您已修补了您的安全提供程序,以解决诸如Bouncy Castle中发现的漏洞。

在所有情况下,对内容进行HMAC处理可以帮助确保没有应用添加和/或更改。

使用其他存储机制

如果使用其他公共存储机制(而不是SharedPreferences.Editor),则需要在从存储机制读取数据的瞬间对其进行验证。