我有一个移动应用程序(iPhone 和 Android),它允许用户登录到他的帐户,更改首选项等...
我想添加一个新功能,用户可以通过他的设备购买产品或升级他的服务。一切都将从设备运行,我想让用户使其同步到 Web 服务器的每个事务。
我的服务器上有 HTTPS 设置。我想知道是否:
- 这是一个好习惯吗?还是我应该简单地告诉用户使用我们的网站
- 如果“是”,仅 HTTPS 是否可以很好地处理这些事务?
谢谢
我有一个移动应用程序(iPhone 和 Android),它允许用户登录到他的帐户,更改首选项等...
我想添加一个新功能,用户可以通过他的设备购买产品或升级他的服务。一切都将从设备运行,我想让用户使其同步到 Web 服务器的每个事务。
我的服务器上有 HTTPS 设置。我想知道是否:
谢谢
是的,这是一个很好的做法。
首先总是使用 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
阅读更多