android
Android具有内置于操作系统中的安全功能,可显着减少应用程序安全问题的频率和影响,但作为应用程序开发人员,我们的工作是保护应用程序安全。
安全级别取决于应用程序类型和域。
我们很少忘记安全方面的内容。
我正在本文中收集这些常见技巧。
在这里,我列出了开发人员在保护应用程序时应注意的最常见事项。
- 不要在SDCard上存储私人或敏感数据。 要将文件存储在内部存储中,请使用以下具有私有模式(Context.MODE_PRIVATE) openFileOutput和openFileInput的方法。 如果您真的想将数据存储在sdcard中,请对其进行加密。 您会发现许多加密库。 我更喜欢隐瞒脸书。
- 使用设置为false的导出标志限制ContentProvider。 并非每次我们开发ContentProvider进行应用程序之间的数据交换时都可以,但是ContentProvider可以针对单个应用程序或私有应用程序进行开发。
<provider android:exported="false" android:name="MyContentProvider" android:authorities="com.example.mycontentprovider" />
- 限制WebView访问本地数据。 HTML5和相关技术已成为开发移动Web应用程序或混合应用程序的流行方法。 对于Hybrid,使用WebView从本地存储HTML显示内容或从服务器获取HTML和其他内容。 WebView的主要安全问题是setAllowFileAccess()和setAllowContentAccess()方法。
- 不要通过广播和意图传递敏感信息。 使用LocalBroadcastManager在进程/应用程序中广播数据。 支持库V4中提供了LocalBroadcastManager 。
- 不要在LogCat中打印敏感信息。 信息,例如用户名,密码,Web服务URL,请求或响应等详细信息。
- 发布应用前,请删除不必要的日志。
- 不要处理恶意意图。 在用BroadcastReceiver的onReceive方法接收Intent之前,请验证调用方的程序包名称,操作和其他信息。
- 获得许可保护您的服务。 仅当为您的应用开发Service时,将暴露标志用作false。
- 限制对活动的访问。 如果活动仅用于应用内部使用,则将导出标志设置为false。
<activity android:name=".view.MyActivity" android:exported="false"> </activity>
- 发布APK之前,请确保调试模式为false。
- 即使存储在内部存储器中,也要加密敏感数据。
- 对于跨应用程序功能,请在响应之前验证调用应用程序。
- 正确验证HTTPS Web调用的服务器证书TLS / SSL。
- 每当您觉得Java代码中的信息不安全时就使用NDK,因为它很容易反编译。 即常数。
- 使用ProGuard可以缩小,优化和模糊化您的代码。
- 从AndroidManifest.xml中删除不需要的/未使用的<user-permission>
- 在应用程序外部加载classes.dex是主要的安全风险。 DexClassLoader允许开发人员按需加载classes.dex。
资源: http : //developer.android.com/training/articles/security-tips.html
翻译自: https://www.javacodegeeks.com/2014/05/simple-tips-to-secure-android-app.html
android