Android:Mysql、php、json、http和安全

Android:Mysql、php、json、http和安全,php,android,mysql,json,api,Php,Android,Mysql,Json,Api,我对Android和Java世界还很陌生;我正在尝试开发一个需要在数据库中获取和插入信息的应用程序。 我在网上搜索,发现最好的解决方案是使用带有Jsons输出的PHP文件作为应用程序和Mysql数据库之间的接口,使用HTTP连接 然而,我不知道如何“保护”一切。 例子: 要更改用户的昵称,我使用以下代码将我的应用程序连接到php页面: $nickname = $_POST['nickname']; $id = $_POST['id']; nicknameChange($id,$nickname)

我对Android和Java世界还很陌生;我正在尝试开发一个需要在数据库中获取和插入信息的应用程序。 我在网上搜索,发现最好的解决方案是使用带有Jsons输出的PHP文件作为应用程序和Mysql数据库之间的接口,使用HTTP连接

然而,我不知道如何“保护”一切。 例子: 要更改用户的昵称,我使用以下代码将我的应用程序连接到php页面:

$nickname = $_POST['nickname'];
$id = $_POST['id'];
nicknameChange($id,$nickname);
function nicknameChange($id,$nickname){
global $mysqli;
$sql = "UPDATE users SET nickname = ? WHERE id = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('si',$nickname,$id); 
$stmt->execute();
}
我通过post传递想要更改昵称和新昵称的用户的id,如何确保没有人会“操纵”传递给其他用户id的页面来更改他们的昵称? 我在网上读到,HTTPS连接可以解决这个问题,这就足够了吗?

在客户端(android)和服务器(php)中,您需要使用类似“API密钥”的密钥

服务器中

$message = 'Access denied';
$checkApi = false;
if(function_exists('apache_request_headers')){
    if(apache_request_headers()['Authorization'] == '2d30ff242f8650954bfe8c993f084f4f')
        $checkApi = true;
}

客户端:在您的请求中,您将把字符串“2d30ff242f8650954bfe8c993f084f4f”和键“Authorization”放入头请求


这是私钥

如果使用反向工程的人从应用程序中获得密钥“2d30ff242f8650954bfe8c993f084f4f”,他将能够构建一个假应用程序来绕过此漏洞,这句话正确吗?因此您可以从android应用程序id(例如:authen.example.com)生成它,并在您的请求中发送一个私有+应用程序id(通过方法)
if(isset($_SERVER["Authorization"]) && $_SERVER["Authorization"] == '2d30ff242f8650954bfe8c993f084f4f'){
    $checkApi = true;
}