Java Android应用程序和PHP Web服务安全

Java Android应用程序和PHP Web服务安全,java,php,android,web-services,Java,Php,Android,Web Services,我正在构建一个使用PHP web服务的android应用程序,我也在构建这个应用程序 我的问题是,如何防止未经授权的用户使用我的Web服务?例如,是否有人可以获取我的web服务的地址并在我的应用程序之外使用它,例如向我的服务发送post变量 另一个相关的问题是如何防止我的Web服务上的垃圾邮件请求?是否会记录IP地址并限制呼叫量?您可以在Android设备和webservice API端点之间使用HTTPS连接 限制webservice,使其仅接受HTTPS连接。您可以使用Apache轻松做到这

我正在构建一个使用PHP web服务的android应用程序,我也在构建这个应用程序

我的问题是,如何防止未经授权的用户使用我的Web服务?例如,是否有人可以获取我的web服务的地址并在我的应用程序之外使用它,例如向我的服务发送post变量

另一个相关的问题是如何防止我的Web服务上的垃圾邮件请求?是否会记录IP地址并限制呼叫量?

您可以在Android设备和webservice API端点之间使用HTTPS连接

限制webservice,使其仅接受HTTPS连接。您可以使用Apache轻松做到这一点,或者直接在PHP连接处理程序中使用或

在使用HTTPS传输流时,您可以在对Web服务进行API调用时传递特定参数,以确保请求已从应用程序发送。没有人能够知道传输的是什么特定数据,也无法复制到远程服务的可接受连接


关于第二个问题,您确实可以在给定的时间内限制请求的数量。无论是在PHP中还是通过使用特定工具,例如。

PHP都可以通过POST接收数据,或者从您的站点甚至internet浏览器中获取数据。执行此操作的方法之一是

你指的是什么?这个问题被称为

如果您能够,您应该在应用程序中使用,这可以解决许多安全问题

如果您无法使用HTTPS,无论它是否昂贵或存在任何其他问题:

您必须在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;
}
最后,阅读

编辑

如果您无法支付HTTPS证书,如前所述,您可以使用:

,, 这些都是免费的。 当然,这有它的优点和缺点


如果他不使用安全的HTTPS连接,以明文形式传递数据可能会被任何人通过不同类型的攻击读取。如果攻击者可以读取发送到其API的数据,他可以复制截获的请求,使Web服务认为他是真正的Android应用程序。他没有问如何防止这种攻击,只是说使用HTTPS可以解决许多安全问题,就像你刚才提到的那样。如果他不能支付https连接,他可以做我提到的事情,如果他可以支付,那么这将解决许多问题。https不是成本问题。第三方签署的证书可能很昂贵,但在这种情况下,没有任何东西阻止您使用自签署证书。此外,他还问了如何防止未经授权的用户访问他的服务:我的问题是,如何防止未经授权的用户使用我的Web服务?我回答了这个问题,比如如何防止未经授权的用户影响我的系统通过POST或GET发送数据?在许多国家,比如我居住的阿根廷,拥有HTTPS可能会很昂贵。也许他没有钱支付,但只是想让你的应用程序尽可能安全,然后,如果他可以支付并实现它,很好,否则,如果他不能支付,那么我建议阅读这些官方文档和链接,使她的系统更健壮。正如我所说,他还可以使用自签名SSL证书:。这些都是免费的。当然,这有它的优点和缺点。