Android 在基于Cordova的移动应用程序和web服务器之间的通信过程中,确保隐私的最佳方式是什么?
我已经基于Cordova构建了一个移动应用程序,对于iOS和Android,我需要在应用程序和服务器之间进行安全通信。在javascript中,对服务器的请求如下所示:Android 在基于Cordova的移动应用程序和web服务器之间的通信过程中,确保隐私的最佳方式是什么?,android,ios,cordova,encryption,get,Android,Ios,Cordova,Encryption,Get,我已经基于Cordova构建了一个移动应用程序,对于iOS和Android,我需要在应用程序和服务器之间进行安全通信。在javascript中,对服务器的请求如下所示: request.open("GET", 'http://url/service?firstElement='+elem+'&secondElement='+elem2, false); 我曾尝试使用RSA加密在本地使用pidCrypt库生成公钥和私钥,2048位密钥需要很长时间才能生成,因此我使用了512位密钥
request.open("GET", 'http://url/service?firstElement='+elem+'&secondElement='+elem2, false);
我曾尝试使用RSA加密在本地使用pidCrypt库生成公钥和私钥,2048位密钥需要很长时间才能生成,因此我使用了512位密钥。
服务器无法解密该消息
我正在寻找更好的解决方案。尝试使用SendAjax请求,如下所示。我假设您使用php作为动态代码服务器端 下面是HTML文件的示例,它出现在您的cordova phonegap目录中
<form method = "post" action = "#!">
<div class="col-md-4">
<span class="help-block">Name</span><input type="text" name="username" class="form-control" />
</div>
<br>
<div class="col-md-4">
<span class="help-block">Password</span><input type="text" name="password" class="form-control" />
</div>
<input type = "submit" value = "Save" class = "btn btn-success right" onClick="UpdateRecord();"/>
</form>
<script>
function UpdateRecord()
{
var name = $("[name='username']").val();
var host = $("[name='password']").val();
jQuery.ajax({
type: "POST",
url: "php/login.php",
/* Or */
/*url: "https://www.yoursite.com/page",*/
data: "username="+ username+"& password="+ password,
dataType: "html",
cache: false,
success: function(response){
if(response == 'true') {
$.session.set("myVar", username);
window.location.href='profile.html';
}
else {
$("#errorMessage").html("Invalid Entry, Please Try Again");
}
}
});
}
</script>
发送敏感数据时避免使用GET方法
编辑,有用的链接
仅仅以POST的形式发送数据并不能提供安全性,它只会使数据更难查看。@Zaph是的,我知道,但我认为这是将数据发布到php页面,然后使用所需方法对其进行加密的唯一方法。如果您知道如何在HTML中加密数据,请发布它。它帮助了很多人。我认为我们使用jquery加密数据并将其发送到php。这是正确的方法吗?正如我所评论的,简单的解决方案是使用https SSL。@Zaph,是的,在我的代码中,我用或在评论中提到它。是吗?简单的解决方案是使用https SSL。RSA加密通常用于加密密钥,而不是数据。对于加密数据,当前的最佳做法是AES。
<?php
include 'config.php';
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
if(!empty($username) && !empty($password))
{
//$result = mysql_query("SELECT * FROM ".$db.".users WHERE username='$username' and password ='$password'");
$result=mysql_query("select * from ".$db.".users WHERE email = '$username' ");
while($data = mysql_fetch_row($result))
{
$original_password = $data[3];
$salt = $data[4];
$hashedPass = sha1($salt.$password);
$fullusername = $data[16]." ".$data[17]; // Used Only for create full name session
if ($original_password == $hashedPass)
{
$_SESSION['username'] = $fullusername;
$_SESSION['useremail'] = $username;
$_SESSION['UserID'] = $data[0];
echo 'true';
}
}
}
?>
request.open("GET", 'http://url/service?firstElement='+elem+'&secondElement='+elem2, false);