我是否应该在App Store中发布带有打印语句的应用程序?

Lan*_*ria 7 security printf uiviewcontroller ios mac-app-store

我打算很快将我的应用程序发布到App Store(在TestFlight之后).我有很多视图控制器print,其中包含语句.这些print语句用于测试目的(调试器),用户永远不会看到它们.

如果我在应用程序中发布或不包含打印语句,它会有什么不同吗?

打印语句是否会在场景之间切换时降低速度,即使是毫秒?

我可以因为将它们包含在我的应用中而被拒绝吗?

在几个vcs中我打印uid只是为了清楚我自己.通过在应用程序中包含这些打印语句,是否存在任何安全风险?

Tom*_*ina 10

我假设您正在使用Swift,那么print即使对于AppStore构建也是完全安全的.你不会被拒绝,也不是安全风险.

print与类似的不同NSLog,它不会在用户可见的任何地方生成任何日志(例如在Xcode设备控制台中).

上的区别更多信息printNSLog:斯威夫特:打印()VS的println()VS的NSLog()


hib*_*rn8 6

该问题的前提假设您面临一个想要内省您的应用程序的对手。所以你需要回答的问题是:“你希望(或被要求)在多大程度上为这些人制造困难?”。

使用 print 而不是 NSLog 所做的一切都是提高了自省的标准。没有 100% 保证的方法可以防止攻击者内省您的应用程序;假设他们能够在安全性受到损害(即越狱)的设备上执行它。

我创建的一个系统级调整是挂钩每个 print() 调用,并对其参数进行 NSLog...从而将 print() 转换为 NSLog。现在有像 Logify 这样的调整,它将挂钩应用程序中的所有类和方法,以便您可以完全跟踪其执行流程,但这对于阅读来说有点像一场噩梦。

如果您正在创建一个特别敏感的应用程序并且想让事情变得更困难,您可以将 print() 调用包装在编译器语句中以查看您是否在模拟器上:

#if TARGET_OS_SIMULATOR
    print()
#endif
Run Code Online (Sandbox Code Playgroud)

这仍然是一个容易出错的机制,但确实提高了标准。只是取决于你的要求是什么:)

我:我是一名移动应用渗透测试人员,在“如何不做事”方面拥有丰富的经验。