在生产环境中保留Log.i是否安全?

15

在我的安卓应用程序中,我广泛使用Log.iLog.e

在这些命令中,我通常传递与我的应用程序通信的SQLite查询或http rest url。

我的问题是:当应用程序到达Play商店时,保留这些日志是否安全?如果用户在连接到计算机的设备上运行应用程序,他能否在他的LogCat上查看Log消息?


1
如果您不删掉它,当然用户就能看到。 - Blackbelt
是的,用户可以在logcat中阅读这些日志消息。 - sabadow
1
有趣的问题...两个应用都在Play商店上是安全的,而且可以被查看到。 - Akarsh M
在异常块中你会做些什么?你会保留 log.e 来记录异常吗,还是将其删除? - Jasper
4个回答

8
如果用户将设备连接到计算机并读取logcat,则可以看到应用程序生成的所有日志消息。
一个可能的解决方案是使用Proguard自动删除所有日志消息。
有关此答案的更多信息:如何配置proguard仅删除android日志调用 希望这有所帮助。

4

是的,用户将能够读取这些日志文件。它是否“安全”?这要看情况。你的rest调用或sqlite查询是否是机密的?无论如何,所有的网络通信都可以被wireshark等工具读取。

当我发布我的应用程序时,我会创建自己的Log类,并使用方法i、d、e等来代替Android的Log类。因为这样我就可以根据一个简单的开关boolean debug = true 决定是写入LogCat还是不写入。这样我就可以在应用程序中留下所有的日志语句了。 当你编写自己的Log类以在整个应用程序中使用时,只需替换所有的

import android.util.Log; 

使用

import your.package.Log; 

使用Eclipse。

你所建议的正是我考虑到安全问题时想到的。然而,像 sabadow 和 Shajeel Afzal 建议的 Proguard 更加吸引人。 - antoniom

1

记录日志是开发人员使用的非常方便的调试和诊断技术。使用作为Android SDK一部分提供的日志记录类将有关应用程序的重要信息记录到LogCat中,但在发布之前请务必审查应用程序的日志记录实现,因为记录日志会影响性能。

在发布应用程序之前,请仔细检查日志,以确保不泄露任何机密数据。

当您的应用程序处于测试模式时,记录日志非常重要。日志将为您提供当前设备上应用程序的当前状态和场景。因此,每当您更新应用程序时,它都非常有帮助。

有时候,如果Google Play发现您的日志记录机制违反规则,他们会拒绝发布您的应用程序。


0

在生产环境中保留日志方法是不安全的。这些日志可以用于跟踪Android中的不同回调,如果您在其中显示数据库记录,则必须在发布应用程序之前删除它们。

您不必逐个删除项目中的日志回调。您可以使用Proguard通过在项目根目录中编写几行代码来自动删除日志方法。

按照此答案使用proguard删除日志方法


2
为什么不安全呢?我的意思是,如果你的字节码在别人的计算机上运行,那么你必须假设他们无法隐藏任何东西。 - Gareth Davidson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接