在android上的服务器上传之前验证数据

时间:2016-02-19 08:19:36

标签: java android json http-headers http-post

我正在开发一个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);

这是正确的方法吗?它会安全吗?

1 个答案:

答案 0 :(得分:1)

您的代码存在的问题是AuthentificateData没有返回任何内容。

您的方法的问题是您假设密码可以安全地存储在手机上。如果将它放在代码中,即使在混淆之后,任何人都可以反编译您的源并读取值。

要提供安全传输,您需要使用非对称加密,也称为public key cryptography。任何人都可以知道公钥,并且可以安全地存储在手机中。您必须保护您的服务器不泄露您的私钥。

为了帮助您进行身份验证,您还可以使用digital signatures.

您无需从头开始实施它们。你有simple examples来开始。