1

我正在使用 NSUrlConnection 异步请求将信用卡信息传输到安全的第三方服务器。

我执行以下操作:

  1. 我从 uitextfields 获得信用卡号、cvv 等。
  2. 将信用卡信息编码为json格式。设置为NSURLConnection请求的 httpd 正文如下:

    NSDictionary * params = @{"creditCardNumber": @"4242....", @"cvv": @"455"....
    NSURL * url = [[NSURL URLWithString: "https://www.example.com"];
    
    NSMutableURLRequest * request = [[NSMutableURLRequest alloc] initWithURL: url];
    
    [request setHTTPMethod: @"POST"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    
    [request setHTTPBody: [NSJSONSerialization dataWithJSONObject: params options: kNilOptions error: &parseError]];
    
  3. 通过异步请求将此信息发送到安全的第三方服务器:

     [NSURLConnection sendAsynchronousRequest:request
                                                   queue: queue
                                       completionHandler:^(NSURLResponse *response, NSData  *data, NSError * requestError) {
    

我应该考虑使用 nsurlconnection 异步请求将用户信用卡信息发送到第三方服务器吗?

这是从移动应用程序发送信用卡信息的正确方法吗?

我能做些什么来防止中间人攻击?

4

3 回答 3

2

根据您的操作,您可能需要遵守 PCI、PADSS 等标准。

除了通过 HTTPS 进行通信外,针对中间人攻击的一般强化流程包括:

  • 不要在设备上存储任何详细信息。存储在 RAM 中是可以的。
  • 后端指示您使用许多预取的公共加密密钥之一。每个键都与一个 id 相关联。您将从本地商店获取它指示您使用的密钥。您将使用该密钥创建您的 deta 哈希。然后发送到后端。

对于加密,我建议查看CoocaSecurity项目。它包装了一些较低级别的 API,使它们更容易“消化”(请原谅双关语)。

于 2013-10-21T03:56:10.530 回答
0

您的请求看起来不错,只要确保您通过 https 而不是 http 访问即可。这意味着您的服务器必须支持 https

于 2013-10-20T21:55:33.317 回答
0

假设您为您的 Web 服务制定了一些安全认证方案之王,那么您至少已经清除了基础知识。你最大的弱点是 HTTPS。尤其是在移动世界中,HTTPS 很容易被渗透。我知道这听起来有点偏执,但你必须这样想才能保持领先。

下一步将对请求的有效负载应用额外的加密级别。Blowfish 将是加密有效负载的一种简单易行的方法。

于 2013-10-20T23:07:45.313 回答