我正在尝试从我的Android应用程序登录我的网站。显然不可能发送POST请求,因此唯一的方法是发送GET请求。这样发送密码好吗?我应该以某种方式加密吗?
答案 0 :(得分:1)
执行此操作的方法,您应该使用base64_encode函数对您的详细信息进行编码,并将其传递给“GET”参数。
此外,您可以添加一些内容以混合密码。因此,这取决于您希望如何显示和传递登录凭据。
*注意:对于移动设备,我认为它不能像PHP中的bcrypt一样使用加密功能。
希望这有帮助!
答案 1 :(得分:0)
我认为您无法通过HTTP GET发送设备用户的凭据。如果您可以通过一些奇怪的编码方法进行GET,那么除非加密并建议使用SSL,否则它不会安全。但是,它很可能通过HTTP POST,也可以加密。您应该使用SSL进行POST。如果您需要参考,可以使用以下示例代码。
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);
?>
答案 2 :(得分:0)
您可能必须同时执行加密和发送POST请求。如果您的登录过程可以作为API使用,则可以使用WebRESTClient执行相同的操作..
此外,您可以执行简单的散列操作
MessageDigest md5Hash = MessageDigest.getInstance("MD5");
mDigest = md5Hash.digest(password.getBytes());
String hashedMessage = new String(Hex.encodeHex(mDigest));