Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序与PHP服务器通信_Php_Android_Security - Fatal编程技术网

Android应用程序与PHP服务器通信

Android应用程序与PHP服务器通信,php,android,security,Php,Android,Security,我试着用一个简单的例子来说明我的问题:我在android上有一个小应用程序,用户可以登录并保持登录。因此,我知道用户id并将其存储在智能手机上 现在在我的服务器上,我有一些特定于用户的条目,它们会不时地变化。我会下载它们,以便这些条目在应用程序中本地可用,但显然只有登录用户的相关条目 如何安全地做到这一点 我可以设置一个PHP脚本,将具有指定ID的用户条目作为JSON数据数组提供。但是如何使它足够安全,以便没有人可以利用脚本,例如直接从浏览器调用脚本?我的意思是我可以做一些像: <?php

我试着用一个简单的例子来说明我的问题:我在android上有一个小应用程序,用户可以登录并保持登录。因此,我知道用户id并将其存储在智能手机上

现在在我的服务器上,我有一些特定于用户的条目,它们会不时地变化。我会下载它们,以便这些条目在应用程序中本地可用,但显然只有登录用户的相关条目

如何安全地做到这一点

我可以设置一个PHP脚本,将具有指定ID的用户条目作为JSON数据数组提供。但是如何使它足够安全,以便没有人可以利用脚本,例如直接从浏览器调用脚本?我的意思是我可以做一些像:

<?php
// check and validate $_GET['user_id']
...

// select all entries for this id:
$mysql->fetch('...');

// return as JSON:
echo json_encode($rows);
?>
------->但仍然存在一个大问题:当我在android应用程序存储中本地存储用户id时,用户是否真的可以以任何方式修改该id?我认为本地android存储将是安全的,并且仅限于特定应用程序使用


提前感谢

让我们先回答第二个问题

我必须确保没有人能在这方面利用android应用程序 他修改存储的用户id的方式

这是行不通的,因为用户端的任何东西都是不可信的。他们无论如何都可以修改这个

现在,作为您的第一个问题,为什么不在手机中本地存储您的用户id和密码呢。每次需要检索数据时,都会将用户id和密码传递给服务器进行验证。这样,用户是否修改用户id或密码并不重要。作为普通用户,如果您将密码存储在本地,他们不需要更改密码并重新登录

更新:

任何本地存储都不安全。任何根设备都可以查看/编辑应用程序拥有的任何文件。它不可由非根设备查看。但是,你可以为你的安全设备和那些试图破坏你的应用程序的人增加一点安全性,所以你不能认为这个百分比是安全的。
正如评论所指出的,如果发送密码,请使用POST而不是GET。

非常感谢您的回答。请看我上面更新的问题:-)!?永远不要通过GET发送密码。总是使用POST,如果可能的话使用SSL。@Javier Provecho Fernández:是的,我会这样做,但你能告诉我为什么吗?但是,是的,无论如何我都会通过POST发送——发送加密密码很好,不是吗?如果服务器支持,甚至可能使用SSL…@tim:如果您通过发送获取salt密码作为参数,它将在URI中可见,供“任何人”嗅探,甚至在历史记录中。POST+SSL很难获得。是的,可以,但只有在使用SSL时。当不使用SSL时,我认为GET和POST之间不会有任何区别。!?
// check and validate $_GET['user_id'] and $_GET['saltedPass']
...
if(correctCredentials()) {
  // select all entries for this id:
  $mysql->fetch('...');

  // return as JSON:
  echo json_encode($rows);
}