我对源代码中的密码有一个问题。例如,如果你想连接到FTP服务器,你必须在源代码中以纯文本形式写入密码。这安全吗?或者可以反编译JAR文件或Android APK文件,以获取纯文本格式的数据吗?有没有安全的方法来存储数据?
如果必须在源代码中包含密码,那么在C中对其进行模糊处理会更安全,Java代码只需从JNI获取密码即可。否则,请遵循勒内·延森的建议。
Java De编译器在互联网上很容易找到
如果是apk,您可以
. jar
文件使用工具,如dex2jar转换器
但是我也发现了一些不能以这种方式反编译为源代码的应用程序,我不知道他们是如何做到这一点的。
最安全的方法是让“中间人服务器”与ftp在同一台机器上运行。
该应用程序与服务器联系,并说“给我文件”。然后服务器登录到ftp并将文件发送回应用程序。
应用程序永远不知道密码,用户名或任何文件传输协议。只有ip地址和如何从服务器获取文件。
然后,服务器可以有某种保护,只接受某些请求,或者只接受应用程序等的请求。
问题内容: 我将决定该项目的编程语言。要求是某些客户希望在没有外部Internet访问的情况下在隔离的服务器上运行应用程序。 为此,我需要向他们分发应用程序,并且不能使用在我的云上运行的SaaS方法(例如,我更愿意这样做…)。 问题是,如果我决定使用Python进行此开发,则需要为客户提供易读的代码,而这并不是我真正想做的(当然,我了解所有“您确实需要保护您的源代码”这类问题,但目前已超出范围)。
我知道在java源代码中以字符串形式存储密码是不安全的。通常,最好将其存储在具有char[]类型的变量中。以以下形式存储密码安全吗? 字符串“my password”是否出现在编译的java类文件中?在我看来,在编译源代码之后,“我的密码”不会出现在我的类文件中。但我仍然不能100%确定我可以使用描述的表示来存储密码。 我能否安全地使用这个结构,并确保密码受到保护,除非有人从源代码中获取密码? 编
问题内容: 很简单,可以从多个线程中使用一个实例(例如),还是需要将多个实例放在一个线程中? 问题答案: 不,不是。该实例是有状态的。因此,您需要将其存储在threadlocal中,或者在每次加密/解密调用中获取一个新实例,或者将其包装在一个块中。 Threadsafety通常在Javadoc中提到“ 是线程安全的 ”或“ 是 不是 线程安全的 ”。情况并非如此,因此您不应假定它是线程安全的。
在回答这个问题之前,我必须说,我知道在客户端应用程序中硬编码密码是一种不好的做法,原因有很多。关于这个问题还有其他问题。这个问题的范围更窄,假设身份验证凭据必须驻留在客户端应用程序的代码上,原因是您无法控制的。 如果某些方法优于其他方法(例如:JPasswordField将密码存储在字符数组而不是字符串中),并且如果必须在Java应用程序中对其进行硬编码,您可以采取哪些措施使其更难获取? 更新:
我有一个程序可以连接到一个网站,并对其内容进行更改。程序首先登录,才有权更改内容。现在我想把程序传给其他人,这样他们就可以运行程序来帮助我完成任务。 该程序只能在我的帐户下登录,我不想传递密码。我决定这样硬编码密码: 如何确保无法恢复密码?如果不可能,该怎么做才能使恢复手术变得困难?还有什么更好的方法来解决我的问题?
我需要在源代码中隐藏密码,有什么可能的方法来混淆密码,以降低反编译的风险? 例如