【问题标题】:secure http calls in iosios中的安全http调用
【发布时间】:2013-04-16 10:03:41
【问题描述】:

如何在每次从我的应用程序触发时确保 http 调用的安全,并且它还需要超时,以便任何其他用户无法从任何浏览器使用相同的链接。

我正在寻找 ios 解决方案,而不是 html 表单。

请帮帮我。无法解决此问题,也不知道该往哪个方向进行。

提前致谢。

我正在附加 PHP 和 ios 的工作代码,它们发布请求并返回响应,但没有附加安全性,任何用户都可以通过随时从浏览器调用相同的 HTTP 响应来获得相同的响应...

ios 代码:

    NSURL *url=[NSURL URLWithString:@"http://example.com/getmsgs/strno=123"];

    NSURLRequest *request=[NSURLRequest requestWithURL:url];

    connection=[NSURLConnection connectionWithRequest:request delegate:self];

    if(connection){

        webData=[[NSMutableData alloc]init];

    }


NSError *requestError = NULL;

NSDictionary *allData=[NSJSONSerialization JSONObjectWithData:webdata options:0 error:&requestError];


if (requestError){
    //An error occurred.
    NSLog(@"error is : %@",requestError);
}

if (! allData) {
    NSLog(@"Got an error: %@", requestError);
} else {
    NSLog(@" data is : %@",allData) ;
}



NSArray *arrayOfEntry=[allData objectForKey:@"json"];

for (NSDictionary *diction in arrayOfEntry) {


    NSString *label=[title objectForKey:@"image"];

    NSString *label2=[title objectForKey:@"artist"];

    NSString *label3=[title objectForKey:@"name"];

    [array addObject:label];
        [array addObject:label2];
            [array addObject:label3];

}

php代码:

<?php

    $strno=$_GET['strno'];

    if (isset($strno))
    {
            $connect=mysql_connect("localhost","test","test") or die ('Connection error!!!');
            mysql_select_db("test") or die ('Database error!!!');

        $query=mysql_query("select sno FROM users  where strno='$strno';");
        while($row = mysql_fetch_assoc($query))

        {
            $jsonoutput='{"json":{
                "image":"'.$row['image'].'",
"artist":"'.$row['artist'].'",
"name":"'.$row['name'].'"
                }}';
        }

    }

    echo trim($jsonoutput);
    mysql_close($connect) or die ('Unable to close connection-error!!!');
    }

    ?>

【问题讨论】:

    标签: iphone ios ios5 ios6


    【解决方案1】:

    您可以使用某种会话来实现您想要的。例如,当用户打开(运行)您的 ios 应用程序时,您可以连接到您的 Web 服务以获取会话密钥(令牌),这对于该应用程序正在运行的设备来说是唯一的。而且,当您的 ios 应用程序进入后台时,您可以使令牌无效(在这里使用 ios 后台执行是合适的)。此外,您可以使用有时间限制的会话密钥,例如,您的会话密钥将在 10 分钟内过期(在服务器端会失效),并且对于新的 Web 请求,您的服务器必须发出另一个会话密钥。祝你好运!

    【讨论】:

    • 感谢先生的回复。您能否用您的解释编辑上面的代码。这将有很大的帮助。在此先感谢。
    • James,我说的是很多代码,所以我不能提供代码。但这里的主要思想是,在您的服务器端,您有设备身份验证方法,该方法将设备唯一字符串(可能还有更多参数,如时间戳等,取决于您的实现)作为参数并生成唯一会话密钥并返回到 ios应用程序。将来对服务器的所有请求都将具有该唯一字符串(会话密钥)作为参数,以便服务器可以识别设备。这将为您对服务器的请求提供一些基本的安全性。
    • 如果其他人知道该唯一字符串,他可以使用该字符串并将带有唯一字符串的链接粘贴到浏览器中并继续执行以下请求,会发生什么情况。我也可以停止吗??
    • 也许您可以分享一个示例/项目的链接,该链接使用您提到的上述描述。这将极大地帮助我实施,之后我可以通过进一步的查询回复您。非常感谢你的帮助。
    猜你喜欢
    • 2013-04-08
    • 2010-12-12
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多