0

我正在尝试从我的 Android 应用程序登录我的网站。发送 POST 请求显然是不可能的,所以唯一的方法是发送 GET 请求。以这种方式发送密码可以吗?我应该以某种方式加密它吗?

4

3 回答 3

1

要做到这一点,您应该使用 base64_encode 函数对您的详细信息进行编码并通过“GET”参数传递它。

此外,您可以添加一些东西来混淆密码。因此,这将取决于您希望如何显示和传递您的登录凭据。

*注意:对于移动设备,我认为它不能使用 PHP 中的 bcrypt 之类的加密功能。

希望这可以帮助!

于 2012-10-22T06:24:31.440 回答
0

我认为您不可能通过 HTTP GET 发送设备用户的凭据。如果你可以通过一些奇怪的编码方法通过 GET,除非它被加密并且推荐使用 SSL,否则它不会是安全的。然而,通过 HTTP POST 是非常有可能的,并且它也可以被加密。您应该为 POST 使用 SSL。如果您需要参考,这里是一些示例代码。

    case R.id.login_login_but:
        Toast.makeText(this, "Logging in...", Toast.LENGTH_SHORT).show();

        ArrayList<NameValuePair> postLogin = new ArrayList<NameValuePair>();
        postLogin.add(new BasicNameValuePair("post_user", "User"));
        postLogin.add(new BasicNameValuePair("post_pass", "Pass));

        try {
            String response = null;
            response = CustomHttpClient.executeHttpPost(
                    "http://giveaway.synamegames.com/appfiles/login.php", postLogin);
            String res = response.toString();
            res = res.replaceAll("\\s+", "");

            if (res.equals(1)) {
            // logged in
            } else {
            // incorrect user or password
            }

        } catch (Exception e) {
            Toast.makeText(this, "Server timeout please try again later. You must have internet.", Toast.LENGTH_SHORT).show();
        }
    break;

而我使用的 PHP 脚本是...

<?php
$username=$_POST['post_user'];
$password=$_POST['post_pass'];
$user = 'db_user';
$pswd = 'db_password';
$db = 'db_name';
$server = 'www.domain.com';
$conn = mysql_connect($server, $user, $pswd);
mysql_select_db($db, $conn);
$query=mysql_query("SELECT * FROM users  WHERE  pass =('$password') AND user = $username")or die(mysql_error());

if(mysql_num_rows($query)==1) {
echo 1;
} else {
echo 0;
}
mysql_close($conn);
?>
于 2012-10-22T05:33:57.140 回答
0

您可能必须同时进行加密和发送 POST 请求。如果您的登录过程可用作 API,您可以使用 WebRESTClient 来执行相同的操作。

此外,您可以进行简单的散列,例如

MessageDigest md5Hash = MessageDigest.getInstance("MD5");
mDigest = md5Hash.digest(password.getBytes());
String hashedMessage = new String(Hex.encodeHex(mDigest));
于 2012-10-22T06:25:51.797 回答