【发布时间】:2013-09-17 09:08:54
【问题描述】:
我只是想知道源代码的编译形式是否真的存在安全问题?
我在想,既然源代码已经编译成机器代码,那么当机器已经在执行指令时(即编译的源代码)应该不会有任何安全问题。
我在网上没有找到任何好的和相关的解释。
【问题讨论】:
-
有一些关于代码安全的文献。我的一位同事的桌子上有东西,但我不记得了。不过,谷歌搜索“软件代码安全”会产生一些有希望的结果。
-
我认为这个问题不适合这个网站。但是有一些东西:你如何验证,编译的代码确实做了你认为它应该做的事情?您如何验证编译器没有向其中添加某些内容,例如键盘记录器代码?此外,通过执行指令,您还可以将数据保存在内存中。那里的所有东西都可能对您不期望的人可见(尽管这样做可能并不容易)。
-
如果您有一个可验证的系统(例如 .NET),您可以排除许多攻击媒介,例如缓冲区溢出。不过,这不会阻止应用程序将密码以明文形式存储在内存中。应用程序不会神奇地变得 100% 安全。这些都与代码是否被编译无关。
-
您的意思是像每隔一段时间从 Microsoft 获取安全更新的代码?可能完全安全,MS 只是假装存在安全问题,因为他们从中赚钱。
-
@molbdnilo 您有一个说法是正确的:安全是一个过程,而不是一个产品。如果您想了解可验证安全的真正含义,请阅读Type Safety and Security 和Writing Verifiably Type-Safe Code。 Importance of Managed and Typesafe code 也可能很有启发性。
标签: java c++ security compilation