【问题标题】:Is it safe to keep Log.i on production?将 Log.i 保持在生产环境中是否安全?
【发布时间】:2014-04-02 11:06:24
【问题描述】:

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

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

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

【问题讨论】:

  • 如果您离开它,用户当然可以看到它。
  • 是的,用户可以在 logcat 中阅读此日志消息
  • 有趣的问题...在 Play 商店中都是安全的,是的,可以看到
  • 你在异常块中做了什么,你是保留 log.e 来记录异常还是摆脱它们?

标签: android android-logcat


【解决方案1】:

如果用户将设备连接到计算机并阅读 logcat,他们可以看到您的应用生成的所有日志消息。

一种可能的解决方案是使用Proguard 删除(自动)所有日志消息。

有关此答案的更多信息:How to configure proguard to ONLY remove android logging calls

希望对你有帮助。

【讨论】:

    【解决方案2】:

    是的,用户将能够读取这些日志文件。它“安全”吗? 要看。您的休息电话或 sqlite 查询是秘密吗?例如,无论如何都可以使用wireshark读取所有网络通信。

    当我发布我的应用程序时,我所做的是:我使用方法 i、d、e 等创建自己的 Log 类,并使用这个 Log 类而不是 Android 类,因为这样我就可以使用像 boolean debug = true 这样的简单开关根据我是否写信给LogCat。这样我就可以将所有日志语句留在应用程序中。 当您编写了自己的 Log 类后,要在您的应用程序中使用它,您可以简单地替换所有

    import android.util.Log; 
    

    import your.package.Log; 
    

    使用 Eclipse。

    【讨论】:

    • 你的建议是我的想法,以防万一它不安全。然而,sabadow 和 Shajeel Afzal 建议的 proguard 似乎更有吸引力
    【解决方案3】:

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

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

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

    如果 Google Play 发现您的日志记录机制违反规则,有时会拒绝您的申请。

    【讨论】:

      【解决方案4】:

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

      而且您不必在项目中一一删除 Log 回调。您可以使用 Proguard 自动删除 Log 方法,只需在项目根目录中的 proguard-project.txt 中写入几行即可。

      Follow this answer to remove logging methods using proguard

      【讨论】:

      • 为什么不安全?我的意思是,如果您的字节码在其他人的计算机上运行,​​那么您必须假设没有什么可以对他们隐藏。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2017-11-04
      相关资源
      最近更新 更多