1

我刚刚开始涉足 Android 开发,目前正在开发一个应用程序,其部分功能是每小时更新 GPS 位置。通过将值发布到类似于下面的 php 文件,我设法让应用程序将位置存储在我的数据库中。我无法弄清楚的问题是如何安全地执行此操作,以便仅存储来自我的 android 应用程序的值,而不仅仅是发布到 url 的任何数据。

接收 gps 值的简化 php 文件:

<?php 

require_once 'connect.php';

$imei = $_POST['imei'];
$longitude = $_POST['longitude'];
$latitude = $_POST['latitude'];

$result = mysqli_query($con, "UPDATE `device_location` SET `Longitude` = '$longitude', `Latitude` = '$latitude' WHERE `IMEI` = '$imei'"); 

?>

本质上,任何知道 php 文件的 url 和有效 IMEI 号码的人都可以发布假 gps 值。如何验证 gps 值仅来自我的 android 应用程序?

4

2 回答 2

0

一种方法是在用户登录到您的应用程序时生成一个随机字符串用作访问令牌。将此字符串保存在您的数据库中,并使用此字符串进行所有未来的 API 调用。然后,您的服务器端代码可以通过在数据库中查找访问令牌来检查访问令牌是否有效。如果有效,则继续请求。

于 2013-11-13T20:16:26.077 回答
0
  1. 您可以在服务器和 android 的应用程序代码中使用硬编码的字符串,并且不要与任何人共享。
  2. 如果您想增加安全性,您可以创建一个由您自己或在服务器中生成 GUID(令牌)的任何库生成的字符串,因此当用户在 android 应用程序中进行身份验证时,将字符串保存在数据库中并过期时间(表中的一列,然后验证请求完成时,令牌是否有效)。令牌应该在来自 android 应用程序的每个请求中发送,当用户完成会话时,令牌应该被删除,因此当他再次进行身份验证时,获取另一个令牌。
于 2013-11-13T20:23:03.237 回答