Безопасная транзакция между мобильным приложением и LAMP

У меня есть приложение для мобильных устройств (iPhone и Android), которое позволяет пользователю войти в свою учетную запись, изменить префикс и т.д.

Я хочу добавить новую функцию, где пользователь может покупать продукты через свое устройство или обновлять свои услуги. Все будет работать с устройством, и я хочу, чтобы каждая транзакция выполняла синхронизацию пользователя с веб-сервером.

У меня есть HTTPS-настройка на моем сервере. Я хотел бы знать, если:

  • Это хорошая практика? или я должен просто сказать пользователю использовать наш веб-сайт.
  • Если "да", только HTTPS подходит для обработки этих транзакций?

Спасибо

Ответ 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

подробнее