我正在开发一个Android应用程序,其中,我发送一些文本,文件到服务器。我正在使用JSON将文件上传到服务器。但我想提供上传数据的安全性。数据应该只从Android设备上传。在我的情况下,如果我使用邮递员发送数据,它将被上传到服务器上。
php开发人员告诉我,"在标题中发送数据"。我谷歌它,我发现了一些代码。Authentication.java
public class Authentication {
public void AuthenticateData(String url) {
HttpPost httppost = new HttpPost(url);
httppost.addHeader("userId","someName");
httppost.addHeader("secretKey","password");
}
}
我就是这样用的。
Authentication authentication
URL = "url_to_upload_data";
JSONParser jParser = new JSONParser();
.
.
authentication.AuthenticateData(URL);
.
List<NameValuePair> param = new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("emailid", emailid));
param.add(new BasicNameValuePair("device_reg", deviceRegNo));
param.add(new BasicNameValuePair("message",message));"));
JSONObject json_Object = jParser.makeHttpRequest(URL, "POST", param);
这是正确的方法吗?它会安全吗?
答案 0 :(得分:1)
您的代码存在的问题是AuthentificateData
没有返回任何内容。
您的方法的问题是您假设密码可以安全地存储在手机上。如果将它放在代码中,即使在混淆之后,任何人都可以反编译您的源并读取值。
要提供安全传输,您需要使用非对称加密,也称为public key cryptography。任何人都可以知道公钥,并且可以安全地存储在手机中。您必须保护您的服务器不泄露您的私钥。
为了帮助您进行身份验证,您还可以使用digital signatures.
您无需从头开始实施它们。你有simple examples来开始。