3

iOS アプリに次のようなコードがあります。

URL *url = [NSURL URLWithString:@"http://urltomyapp.com/createaccount"];
ASIFormDataRequest *createAccountRequest = [ASIFormDataRequest requestWithURL:url];
[createAccountRequest setPostValue:email forKey:@"email"];
[createAccountRequest setPostValue:password forKey:@"password"];
[createAccountRequest startAsynchronous];

私のサーバー実装では、単純にこの情報を self.request.get('email') で取得してアカウントを作成し、チェックなどは一切行いません。ただし、上記のコードは誰でも簡単に実行できるようです (つまり、上記のコードをコピーして自分のアプリに入れるだけですよね?)。彼らが知る必要があるのは、サーバーアドレスと、必要なデータをリクエストに添付でき、サーバーは先に進んでアカウントを作成します。

リクエストが自分のアプリと自分のアプリのみからのものであることを知るために、リクエストを承認するにはどうすればよいですか? これは一般的な懸念事項ですか?他の製品はこれに対してどのように保護しますか?

4

2 に答える 2

2

まず、免責事項。私は確かにWebの専門家でも、セキュリティの専門家でもありません実際、私が答えている唯一の理由は、stackmonsterの返信での議論のためです。

ただし、SSL接続の傍受は、特にユーザーが共謀している場合は、非常に簡単であることを私は知っています。

ただし、一般的には、次のようなメリットがあると思います。

誰を/何を保護しようとしているのかを判断する必要があります。アプリとサーバー間の通信でデータを保護したいだけの場合は、httpsで十分です。外部スヌーピングは、他のSSLトラフィックをスヌーピングするのと同じくらい効果的(または非効果的)になります。

ただし、APIを保護しようとしている場合(質問が示唆しているようです)、ユーザーが送信しているコマンドを確認するのは簡単です(Charlesを使用して自分で見つけたように)。

では、APIの詳細をだれにも知られないようにしたいですか?DOS攻撃を防ぐだけにしたいですか、それとも有効なユーザーだけにコマンドを発行させたいですか、それとも何ですか?

次に、認証と承認について心配することができます(2つの異なるトピック)。おそらく、リクエストが既知のエンティティからのものであることを検証するだけで十分です。

とにかく、最初にネットワークのプライバシー目標を決定する必要があるため、ガイダンスを提供することは非常に困難です。

それから、彼らが高尚であるならば、あなたはたくさんの読書のためにいます。

ただし、ある時点で、アプリ/ビジネスにとって重要なものとそうでないものを決定する必要があります。他の優れたソフトウェア設計と同じように、一連の要件を作成します。次に、それらにいくつかの順序で優先順位を付けます(たとえば、必須、必須、持っていると便利、なくても生きることができます)。

これにより、追加のセキュリティが必要かどうか、およびその種類がわかります。

ただし、ほとんどの場合、すべてのドアをロックして窓を塞ぐことすら時間と投資の価値がないことがわかります(煙突の保護、壁、床、天井へのコンクリートの追加、安全な部屋の建設、雇用は言うまでもありません)。武装警備員)。

于 2012-09-01T16:55:01.123 に答える
2

HTTPS を使用し、アプリ内に証明書を配置して、クライアントがサーバーとの通信を許可されていることを確認します。

しかし、私を信じてください、それは本当にそれだけの価値はありません. 通常、HTTPS の使用はそれ自体で問題ありません。

于 2012-09-01T11:48:41.670 に答える