问题 移动应用和LAMP之间的安全交易


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

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

我的服务器上有HTTPS设置。我想知道是否:

  1. 这是一个好习惯吗?或者我应该告诉用户使用我们的网站
  2. 如果“是”,那么HTTPS是否适合处理这些交易?

谢谢


7331
2017-11-02 18:00


起源



答案:


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

首先总是使用HTTPS。

确保您的证书有效且值得信赖。

对于iPhone:

对于android:

第二,加密你的数据。

任何加密算法或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

阅读更多


14
2017-11-08 00:50



非常感谢您的帮助 - Tech4Wilco


答案:


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

首先总是使用HTTPS。

确保您的证书有效且值得信赖。

对于iPhone:

对于android:

第二,加密你的数据。

任何加密算法或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

阅读更多


14
2017-11-08 00:50



非常感谢您的帮助 - Tech4Wilco