Golang: protect source code
一般来说,现在的Go/Golang是一件很难找到的事情,我在这里也找不到我要找的东西。我知道在用几种语言编译应用程序的过程中,可以进行某种程度的加密。在编译成一个exe之后,有人能给我一个关于go源代码安全性的快速概要吗?如果它可以被读取,至少在一定程度上,有没有什么可以提高源代码的安全性?
- 你想做什么?你害怕别人窃取你的源代码吗?
- 对。我还没有Go-to-Do的技能水平,但我确实有一些想法,我希望在可分发的应用程序中进行市场营销。另外,我想知道硬编码数据库凭证的安全性。
- 不要硬编码凭证,如果您的安全模型依赖于假设您的用户无法找到您的应用程序所做的事情,那么您做得不对。无论您使用何种语言,始终有一种方法可以从您的软件中提取这些凭证。
- 投赞成票。也许代码安全性对我来说不应该是一个高优先级的问题,但是在分布式可执行文件中如何处理DB身份验证呢?
- 设计一个不依赖任何硬编码的安全模型。在配置文件中存储凭据。为每个用户提供不同的凭据。
- 问题在于,您假设我要给每个用户一个帐户,我可能指的是日志数据库,或者可能是我希望从中检索信息的只读数据库,或者是流信息。
- 如果所有用户共享同一身份验证,为什么不完全删除该身份验证?
- 我想确保连接来自我的应用程序。
- @然后,Kwolfe为客户机生成API密钥并将它们交给客户机—通过电子邮件/购买时,或者实现类似OAuth的功能,该功能在首次运行时授权客户机,并向客户机提供一个唯一的密钥,应用程序将该密钥保存在配置文件中,或保存在该操作系统的适当位置。不过,老实说,听起来你已经领先了。
- 我正在超越自己,但这是我所好奇的。
仅分发二进制文件(每个平台/体系结构)。这是你用任何语言都能得到的最好的结果。在安全地对程序进行逆向工程的同时,无法分配程序。任何人告诉你不同的事情,可能只是想卖给你一个"保护"计划。这样的事情真的不存在。
另一方面:99.9%的潜在用户可能不知道如何反向工程您的程序。
另一方面:如果你的0.01潜在用户有能力对你的程序进行逆向工程,你就已经注定了。
下面,试着找出一个依赖于任何东西的商业模式,而不是默默无闻的安全。事实上,即使是开源代码也能产生利润——如果它的价值不仅仅在于本身能够访问源代码。
- 是否也建议剥离调试信息?使用调试标志自动生成。显然,安全性增益可能是最小的,但是对于商业发布的可执行文件来说,它可能无论如何都是值得的(特别是,据我所知,调试信息可能会导致非常轻微的性能问题,不管怎样)。
- @JSORGo二进制文件不是为剥离ATM而设计的-不建议这样做。关于这件事,在golang nuts邮件列表上有一些讨论。
- 即使是Go-Build-Ldflags-S?
- @jsor请参见:groups.google.com/forum/!主题/歌朗坚果/YZCYSNNIUGG