【问题标题】:Authenticate data before upload on server in android在android中的服务器上上传之前验证数据
【发布时间】:2016-02-19 08:19:36
【问题描述】:

我正在开发一个 android 应用程序,在该应用程序中,我将一些文本、文件发送到服务器。我正在使用 JSON 将文件上传到服务器。但我想为上传数据提供安全性。数据只能从安卓设备上传。在我的情况下,如果我使用邮递员发送数据,它会被上传到服务器上。

php 开发人员告诉我,“在标头中发送数据”。我谷歌它,我找到了一些代码。

身份验证.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);

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

【问题讨论】:

  • 你试过运行代码了吗?

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


【解决方案1】:

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

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

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

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

您不必从头开始实施它们。您可以在这里simple examples 开始使用。

【讨论】:

  • 我已经完成了加密。因为我是 php 新手。如果我在浏览器中访问 http 标头链接。它会要求我提供凭据吗
  • 我不确定我是否理解你的问题。您是否要进行用户身份验证?在任何情况下,使用公钥,您都可以安全地加密任何类型的数据,以便以纯文本 http(标头或正文)的形式传递。您可以使用与文本数据或二进制数据相同的方式对用户名和密码进行编码。说“使用标头”的人是指身份验证和会话ID如何在http中传输的正常过程,以避免每次单击链接时都必须输入密码和用户名。
猜你喜欢
  • 1970-01-01
  • 2013-07-24
  • 1970-01-01
  • 2015-09-23
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
相关资源
最近更新 更多