【问题标题】:Secure Transaction between Mobile app and LAMP移动应用程序和 LAMP 之间的安全交易
【发布时间】:2011-12-20 13:40:43
【问题描述】:

我有一个移动应用程序(iPhone 和 Android),它允许用户登录到他的帐户、更改首选项等...

我想添加一个新功能,用户可以通过他的设备购买产品或升级他的服务。一切都将在设备上运行,我想让用户进行的每个事务都同步到 Web 服务器。

我在我的服务器上设置了 HTTPS。我想知道:

  1. 这是一个好习惯吗?还是我应该简单地告诉用户使用我们的网站
  2. 如果“是”,单独使用 HTTPS 是否适合处理这些事务?

谢谢

【问题讨论】:

    标签: security transactions lamp mobile-devices


    【解决方案1】:

    是的,这是一个很好的做法。

    首先始终使用 HTTPS。

    确保您的证书有效且受信任。

    对于 iPhone:

    对于安卓:

    第二次加密您的数据。

    任何加密算法或 rsa 加密都可以解决问题。

    使用 GET/POST 传递数据不应以纯文本形式发送,例如:?user=myuser&pass=mypass。而是使用类似的东西?h28JduDak30fT1pfgmSnShNms762023lflsfdj2h4J。然后在您的服务器上,您只需使用只有您的手机和服务器知道的盐来解密它。

    iphone 的示例代码:

    NSString *encrypteddata =[NSString stringWithFormat:@"key=enryptedstring"];
    NSData *data = [encrypteddata dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
    NSString *datalen = [NSString stringWithFormat:@"%d", [data length]];
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [request setURL:[NSURL URLWithString:@"https://yourserver:443/loginscript"]]; //:443 very importantz
    [request setHTTPMethod:@"POST"];
    [request setValue:datalen forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:data];
    

    android 的类似想法

    然后在您的服务器上,您可以解密 $_POST['key'] 并执行您的登录逻辑(或其他)

    这里有更多资源可以帮助您:

    注意: 对于 android 你应该看看 HTTPComponents

    阅读更多

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 2016-12-11
      • 1970-01-01
      • 2014-04-27
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      相关资源
      最近更新 更多