2014-03-28 60 views
-4

我正在为我的客户端应用程序获取远程JSON值,如下所示。保护http请求的URL

var $Xhr = Ti.Network.createHTTPClient({ 
     onerror : function($e) { 
      Ti.API.info($e); 
     }, 
     timeout : 5000, 
    }); 

$Xhr.open("GET", "http://***********.json"); 
    $Xhr.send(); 
    $Xhr.onload = function() { 
     if ($Xhr.status == 200) { 
      try { 
       Ti.API.info(this.responseText); 
      } catch($e) { 

       Ti.API.info($e); 
      } finally { 
       $Xhr = null; 
      } 
     } 
    }; 

我的json URL是静态的。我想在创建APK文件或iOS发布后,保护这个URL免受陌生人的注意。

另外我的服务器端支持PHP。我有你的MD5,SHA等,但我没有开发任何关于这个algortim的项目。

你有什么建议或方法吗?

预先感谢您。

+0

你是什么意思,“保护”? –

+0

不可能保护... – epascarello

+1

在您的服务器上代理它 – mplungjan

回答

1

我只是说,你不可能“隐藏”终点。您的网址将永远为用户可见,因为否则用户的浏览器将不知道如何将其实际发布到您的服务器。

如果你只想隐藏json对象,即使这不是完全可能的。如果您的JavaScript知道这些值是什么,那么您的任何客户端足够聪明,足以理解JavaScript将能够解码您编码的json对象。请记住,您的JavaScript已解码对象,并且用户可以完全访问它。对此没有保护。充其量,您可以将其从日常用户的隐藏中编码为md5或沙,就像您放置它一样。

1

我想限制只能访问应用用户,您需要首先验证用户身份。

一旦它们通过验证,您应该通过连接用户标识(或任何用户标识数据)和您知道的密钥(一个字符串将执行此操作)并使用任何散列方法对其进行散列来生成散列,md5就足够了对于这种用法我想,无论如何,SHA都很好。

下一步将发送此散列与每个AJAX请求到您的服务器。将其视为一个附加数据。

最后,在处理请求并获取要发送的数据之前,服务器端只需使用请求用户的用户ID和相同的“秘密”密钥,就像在应用中一样生成哈希选择。您现在可以比较两个散列并查看它们是否相同。如果没有,那么可能是有人试图在你的应用之外伪造一个请求。

请注意,对于经过身份验证的人员(取决于他的ID)可能有可能获得他的哈希值,然后将其用于其应用程序之一中,因此按顺序跟踪请求服务器端可能是个好主意检查是否有任何可疑的API使用情况。您可以定期更改您的“密钥”(强制更新您的应用),或者在您的应用和服务器代码中为每年的每一天定义一个具有不同密钥的阵列,以便每个hashkey每天都会更改,每年重复发生。