保护http请求URL

时间:2014-03-28 13:01:54

标签: javascript php apache appcelerator-mobile

我将远程JSON值输入到我的客户端应用程序中,如下所示。

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网址是静态的。我想在创建APK文件或为iOS发布后保护此URL免受陌生人的注意。

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

您有任何建议或方法吗?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

我只想说你不可能隐藏"终点。您的网址将始终向用户显示,否则用户的浏览器将无法知道如何将其实际发布到您的服务器。

如果您只想隐藏json对象,即使这样也不是完全可能的。如果你的javascript知道这些值是什么,那么你的任何客户端都足够聪明地理解javascript将能够解码你编码的json对象。请记住,您的javascript已经解码了对象,用户可以完全访问它。对此没有任何保护。充其量,您可以通过使用md5或sha进行编码来将其从日常用户中隐藏起来。

答案 1 :(得分:1)

我希望仅限制对应用用户的访问权限,您需要先对用户进行身份验证。

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

下一步是将每个AJAX请求的哈希发送到您的服务器。将其视为附加数据。

最后,服务器端,在处理请求并获取要发送的数据之前,只需使用请求用户的用户ID和相同的"秘密&#生成哈希,就像在应用程序中一样。 34;你选择的关键。您现在可以比较两个哈希值并查看它们是否完全相同。如果没有,那么可能有人试图从您的应用外部发出请求。

请注意,经过身份验证的人可以获取他的哈希值(这取决于他的ID),然后在他的一个应用程序中使用它,因此跟踪服务器端的请求可能是个好主意,以便检查您的API是否有任何可疑用途。你也可以改变你的秘密密钥"定期(强制更新您的应用程序)或在应用程序和服务器代码中为一年中的每一天定义一个具有不同密钥的数组,以便每个哈希键每天都会更改,每年都会重复。