11

ユーザーが自分のアカウントにログインしたり、設定を変更したりできるモバイルアプリ(iPhoneおよびAndroid)があります...

ユーザーが自分のデバイスから製品を購入したり、サービスをアップグレードしたりできる新しい機能を追加したいと考えています。すべてがデバイスから実行され、ユーザーが行う各トランザクションを Web サーバーに同期させたいと考えています。

サーバーに HTTPS をセットアップしました。私は知りたいです:

  1. それは良い習慣ですか?または、単にユーザーに当社のウェブサイトを使用するように伝えるべきですか?
  2. 「はい」の場合、HTTPS だけでこれらのトランザクションを処理できますか?

ありがとう

4

1 に答える 1

14

はい、それは良い習慣です。

まず第一に、常に 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];

アンドロイドの同様のアイデア

次に、サーバーで $_POST['key'] を復号化し、ログイン ロジック (またはその他) を実行できます。

役立つその他のリソースは次のとおりです。

注: Android の場合は、HTTPComponents を確認する必要があります。

続きを読む

于 2011-11-08T00:50:16.403 に答える