限制/保护Google Appengine servlet(REST服务提供商)以供特定移动应用使用

时间:2011-05-28 20:29:12

标签: android ios security google-app-engine appcelerator-mobile

通过仅允许来自特定应用程序的iOS或Android设备的请求来保护REST服务提供商(假设在google appengine上运行的java servlet)的最佳解决方案是什么?

假设我在google appengine上运行了一个servlet,它执行一些处理并使用一些JSON数据响应GET请求。我想限制对我在Android和iOS上运行的应用的访问权限。

我目前的解决方案是:

  1. 使用if(tokenValue == request.getHeader(tokenKey)) appengine servlet。和 移动应用上的response.addHeader(tokenKey, tokenValue) 码。所以基本上只有我的应用程序 知道令牌密钥。
  2. 使用HTTP(s)进行上述解决方案,appengine支持此
  3. 使用oAuth - 但我需要让用户从应用程序登录某个oAuth提供程序,这会使应用程序变得复杂
  4. 建议其他有用的方法来解决这个问题。假设这个servlet只提供GET请求,可能使用Restlet或Jackson

2 个答案:

答案 0 :(得分:0)

如果安全对您很重要,那么只有3个是合适的解决方案。这是因为使用该应用程序的任何人都可以拦截流量,只是根据您的Web服务重放这些值。 SSL提供了一些保护,但是一个好的攻击者可以在他们控制设备的情况下解决如何捕获数据的问题。使用OAuth,攻击者所造成的损害仅限于单个用户(只要他们不是应用管理员)。

答案 1 :(得分:0)

使用客户端SSL证书怎么样?我没有试过这个,但我正在考虑它。这是一个描述该方法的页面,其中包含一些示例代码: http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html