【发布时间】:2015-04-09 18:44:45
【问题描述】:
我在互联网上找到了几个地方,他们提到使用该方法
Throwable.printStackTrace()
在您的 Android 应用程序中存在安全风险(这也是不好的编码习惯。)我想了解为什么它存在安全风险?攻击者可以利用提供的信息做什么
e.printStackTrace();
例如,其中 e 是 Exception 类型的?
【问题讨论】:
-
“我在 Internet 上找到了几个地方”——那么请考虑提供这些地方的链接。
-
参见stackoverflow.com/questions/7469316/…问题中的例如项目1和第二个答案。
-
这并不是说
printStackTrace()“构成安全风险”。它说“向最终用户显示堆栈跟踪可能会带来潜在的安全风险”。用户在没有开发工具的情况下无法在 Android 4.1+ 上看到堆栈跟踪,如果他们可以使用这些工具,那么他们可以对应用程序执行许多与堆栈跟踪无关的其他事情。 -
是的,那么让我问一下:为什么“向最终用户显示堆栈跟踪可能会带来潜在的安全风险”?攻击者在很多情况下也是开发人员,因此他们确实知道如何使用开发工具。我不是在问一个一般性的问题,我是专门问关于使用 printStackTrace 的。
-
我不同意在客户端程序中“向最终用户显示堆栈跟踪可能会带来潜在的安全风险”的评估。我只是引用你引用的答案。在服务器端程序中,向用户显示堆栈跟踪(例如,在网页中)可能会带来安全风险,因为那里的攻击者无法直接使用该程序,因此仅限于通过 HTTP 等进行的攻击。堆栈跟踪将披露攻击者否则无法访问的信息。在客户端,攻击者可以随心所欲。