php - 如何保护 web 服务,以便只有我的 android 应用程序可以使用我的 web 服务

标签 php android web-services

我们构建了一个 Android 应用程序,它从 Android 向我的 PHP 服务器发送 HTTP 请求。作为响应,Web 服务将 JSON 对象发送到 Android 应用程序以显示结果。

就像其中一项服务一样

http://mydomain.com/test/weather.php?lat=13.4332&long=80.454

由于我不是 android 专家,所以想从 PHP 端处理 web 服务的安全性。

如何保护我的网络服务调用,以便只有我的应用程序可以使用我的网络服务。我不希望有人解密 apk 并获取 Web 服务 URL 并在自定义输出数据后使用它。

我怎样才能做到这一点?请给我任何好的例子。

最佳答案

如果可以,您应该在您的应用中使用 HTTPS,这可以解决许多安全问题。 为此,创建一个自签名服务器 SSL 证书并使用 Android SDK 中的 keytool 部署在您的 Web 服务器上。然后创建一个自签名客户端并将其部署在您的应用程序中作为资源包含在您的应用程序中的自定义 keystore 中(keytool 也会生成它)。将服务器配置为需要客户端 SSL 身份验证并且只接受您生成的客户端证书。 oReilly : Application Security for the Android Platform 要么 如果它只是您的客户端和服务器,您可以(并且应该)使用 SSL 而无需购买任何东西。您控制服务器和客户端,因此每个人都应该只信任一个证书,一个属于另一个,您不需要为此目的使用 CA。PHP 可以通过 POST 或 GET 从您的站点甚至互联网浏览器接收数据.用于执行此操作的方法之一是通过 curl。 你必须在你的 PHP 中验证 POST 或 GET 接收到的信息,这种语言有很大的能力解决这些“问题”;看一下 PHP 官方文档的这一部分。

假设您正在构建一个登录系统:您还可以在登录页面中添加一个隐藏元素,其中包含只能发生一次的唯一密码,将此密码保存在 session 中,因此,登录脚本会在 session 中查找这段代码与发布到脚本的代码相比,应该可以继续进行。

而且,如果您想获取访问者的 IP 地址:

function getRealIpAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
    {
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
    {
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

您想在这里查找:Encrypt data within mobile app and send to web serviceWeb services: how prevent illegal accesses

关于php - 如何保护 web 服务,以便只有我的 android 应用程序可以使用我的 web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555602/

相关文章:

php - Drupal 8 未安装 MAMP Pro 和 Windows 10

php - Laravel 网站上传 cPanel 错误

linux - PHP-FPM、Monit、ping/状态页面、Apache

android - 执行命令 android native 代码

android - 如何从来电中获取电话号码?

c# - C# 中 ClientCredentials 的 Java 对应项?

php - 自动删除phpmyadmin中的表数据

Android 媒体播放器流不播放

java - 如何将变量和 json 传递给 Web 服务。

java - JAVA RMI 还在任何地方使用吗?