繁体   English   中英

ASP页面和Cocoa / ObjC之间的安全通信

[英]Secure Communication between ASP Pages and Cocoa/ObjC

这是一个奇怪的。 我在公司开发了一个简单的iPhone应用程序进行管理,以检查实时销售统计信息。 第一个障碍是弄清楚如何使该应用程序与我们的旧MSSQL 2005服务器通信。 经过一些研究,似乎最快的方法是创建一个基本的ASP页面,该页面将通过response.write()调用吐出查询结果。 这实际上效果很好-但是返回结果的ASP页面向全世界开放。 我拥有的唯一“安全性”机制并不是真正的一种-更改服务器端的HTTP端口。

所以我的问题是-最佳做法是什么? ASP和Objective-C之间有什么用? 我已经阅读了一些基本的质询响应,加密等内容,但是对于通常无法理解的简单销售数字字符串来说,这似乎有些过头了。 但是随着应用程序变得更复杂,我希望在ASP开始发回更敏感的数据之前解决此问题。

如果有帮助,这是我与服务器代码的连接。 常量就在那里,因此我可以将POST数据附加到该常量,以根据我想要从应用程序获取的内容获得不同的统计信息。 这样做的逻辑在其他地方并不重要。

NSString * const appDataUrl = @"http://{the url for the asp page}";

//Don't ask me how this works. Google FTW...
-(NSString *) pullData:(NSString *) url {
    NSError * error = nil;
    NSURLResponse * response = nil;
    NSData * downloadedData = 
        [NSURLConnection sendSynchronousRequest:
         [NSURLRequest requestWithURL:
          [NSURL URLWithString:url]] returningResponse:&response error:&error];
    NSString *strData = [[NSString alloc]initWithData:downloadedData encoding:NSUTF8StringEncoding];
    return strData;
}

多谢你们。

您可以使用HTTP身份验证(例如,摘要),在其中向每个请求添加用户名和密码。 我不知道Objective-C是否有必要的库来生成相关的摘要令牌,但是如果没有,您可以使用一个我确定可以处理的HTTP库。

然后,您可以在IIS中添加所需的身份验证,以便只有知道用户名和密码的人才能访问该URL。

这样做的另一种方式是在Objective-C中向HTTP请求添加一个特殊的标头,例如带有特殊随机值(可以是预定义的GUID)的X-Auth。

该请求将与该特殊标头一起发送,您可以在ASP中检查其存在及其值。

我还建议添加SSL,以便您可以通过HTTPS访问此请求,以便没有人可以嗅出数据。

用SSL包装通讯。

根据您的用例,您只希望您的应用程序(在iPhone上运行)能够访问您的Web服务。 为此,请在您的应用程序与运行ASP服务的Web服务器上的端点之间配置经过相互认证的SSL。 如果仅让您的应用程序与服务器通信,则不需要CA颁发的SSL证书,但可以使用自签名证书。 在服务器上部署自签名身份证书,并在应用程序中将自签名客户端身份证书作为资源部署。 将您的服务器配置为需要客户端证书,并且仅允许您颁发的证书和您的应用程序正在使用的证书; 这将导致您的服务器仅接受来自客户端应用程序的请求。 将客户端配置为仅信任服务器上部署的服务器证书(因此它只能与服务器对话以获取此数据),并在连接时出示客户端证书(以便它可以向服务器进行身份验证)。 然后,只有您的应用可以调用您的服务器,客户端只能从您的有效来源获取数据,并且整个交易都经过加密和身份验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM