Dev*_*lex 5 java security sftp android credentials
我正在开发一个Android应用程序,它具有将图像/文件上传到FTP服务器的服务.为了实现这一点,设备上的应用程序必须在发送数据之前登录FTP服务器.这就是我的问题.用户不需要/必须知道ftp登录数据.只有应用程序本身.我必须将登录数据存储在Java类中.但是我应该如何保护用户和密码.我可以把它弄糊涂或混淆它.但我认为,当JVM调用"setPassword(passwordString)方法时,黑客可能会在运行时读取密码:
String passwordString = "myPass";
JSch ssh = new JSch();
session = ssh.getSession(SFTP_USER, HOST_ADDRESS, 22);
session.setPassword(passwordString);
Run Code Online (Sandbox Code Playgroud)
那么如何将我的凭据存储在APK中并保护它们呢?我不希望任何人访问我的FTP服务器.
谢谢
我如何将我的凭据存储在APK中并保护它们?我不希望任何人访问我的FTP服务器.
所述问题无法解决.
无论你的混淆技术多么聪明,如果你在APK文件中隐藏固定凭据,那么分析你的应用程序的人就会找到它们.
如果你从这个答案中只拿出一件事,那就是为你的服务器设置一个静态密码是非常有问题的,因为你永远无法改变服务器端的密码,因为你打破了所有的应用程序.您的密码是公共知识将是一个时间问题,您将无法做任何事情.
任何合理的方法都需要为每个用户分别提供访问凭证.
传统的用户注册系统涉及确认电子邮件是一种非常好的方法.您可以使用Google+登录或Facebook Connect等方式来最大限度地减少最终用户的麻烦.
如果您绝对坚持零用户交互,那么(某种程度上)可能有效的方法是让应用注册Google Cloud Messaging,然后向其发送包含访问凭据的推送通知,应用将存储在KeyChain中.如果你生成每一个应用程序安装一个唯一的用户名和密码,你就可以监视服务器,并阻止任何滥用访问凭据,而不会影响任何其他用户.如果您以某种方式将APK的代码签名身份纳入流程,您将对人们重新打包您的应用程序进行基本防御.这种方法不会保护您免受智能攻击者的攻击,但它可能会为您的目的提高标准.
此外,无论您做什么,请务必正确验证服务器的SSL证书.如果不这样做,攻击者只需通过代理服务器运行您的连接.
| 归档时间: |
|
| 查看次数: |
915 次 |
| 最近记录: |