所以我在Programmers SE上阅读{{3}},我有点困惑。简而言之,解决方案是将所有机密信息保存在配置文件中。现在这是我感到困惑的地方。用户无法搜索此文件吗?
使用哪些方法阻止用户查找文件?我在Windows上使用Java,如果它改变了答案。
我认为加密会出现,但我不确定如果用户可以反编译您的来源有多大帮助。
编辑:为了进一步澄清,我的目的是在可执行的JAR文件中使用API密钥(在本例中为1,单一密钥)。
答案 0 :(得分:0)
这取决于您要实现的目标。我将在此假设用户可以访问运行软件的环境。如果您需要存储一些秘密信息,那么您可以使用加密,用户必须提供密钥。这很难自己正确实现,但是有很多库和资源。
如果您的问题与程序员SE中描述的完全相同 - 您希望在不共享“秘密”设置的情况下共享代码 - 将设置提取到配置文件中,并且不共享配置文件。你可以提供一个模板,但缺少秘密。
答案 1 :(得分:0)
阅读了您提供的链接后,我可以考虑以下内容。另外,请随时查看Security network (one interesting question here)。
对于数据库配置文件中的示例,您可以使用
之类的条目<%= ENV['USER_NAME'] %>
<%= ENV['PASSWORD'] %>
并且这两个变量是您设置的环境变量。
使用加密类似。您将加密/哈希密钥存储在配置文件中,并在需要时使用该数据查看是否存在匹配。
您需要根据您的要求进行适当的设计。
如果您愿意,也可以结合使用这两种方法。
我邀请您查看我的GitHub project's config folder。特别是yaml文件。我主要使用上面的第一种方法。这是一个RoR项目。
答案 2 :(得分:0)
如果最终用户可以获得某些信息,您就无法真正保护您的信息 - 即使它们以某种方式加密,只要您的软件在客户端上也可用。它只取决于攻击者为获得它们而投入的犯罪能量。
一种可能性是使用ie。连接池用于数据库连接。
使用这种技术,您可以在不知道密码的情况下远程获取连接对象 - 因此您可以在应用程序中使用连接,但用户无法使用信息通过某些sql工具连接到数据库。