如何保护webservice,以便只有我的Android应用程序才能使用我的webservice

Yog*_*gus 3 php android web-services

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

像其中一个服务就好

http://mydomain.com/test/weather.php?lat=13.4332&long=80.454
Run Code Online (Sandbox Code Playgroud)

由于我不是android的专家,所以想要从PHP端处理webservice的安全性.

如何保护我的webservice调用,以便只有我的应用程序可以使用我的web服务.如果有人解密apk并获取webservice URL并在自定义输出数据后使用它,我不想要.

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

arg*_*m47 6

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

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

而且,如果您想获取访问者的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;
}
Run Code Online (Sandbox Code Playgroud)

你想要在这里查找:加密移动应用程序中的数据并发送到Web服务Web服务:如何防止非法访问