2011-06-27 12 views
0

私のアプリでは、ユーザ名を入力するためにパスワードを入力する必要があります。パスワードを含むウェブサイトサーバーにファイルをアップロードすることができ、ユーザーがアプリのテキストフィールドにパスワードを入力すると、アプリはユーザーのテキストとウェブサイトファイルのテキストを比較して、同じで、したがって、アプリにアクセスする権限があります。この方法で、私は簡単にアプリを更新することなくパスワードを変更することができます。ウェブサイトファイルから文字列を抽出していますか?

私はUIWebviewからテキストを抽出する方法についてのチュートリアルを見てきましたが、アプリでWebViewなしでこれをどうやってやるのだろうと思いました。

チュートリアル:誰もがこれを行うためのより良い/簡単な方法を知っていれば http://www.youtube.com/watch?v=TVATwUMuRBM

また、私に知らせて!

+0

HTMLファイルをダウンロードするのに 'NSURLConnection'を使用してみて、それを解析します。 ...注釈として、暗号化されていないパスワードファイルをサーバーに保存することは、常に悪い考えです。私は暗号化されたパスワードをサーバー側のデータベースに保存します。ユーザーが接続すると、自分のパスワードを暗号化し、データベースの暗号化された値と比較します。 –

+0

このアプリはApp Storeアプリケーションではありません。そのアプリを使用する人はあまりいないでしょうから、私はセキュリティについて心配していません。私は本当にダウンロード/ファイルの解析についてはあまり知らない。あなたはこれを行う方法を示すガイドを知っていますか? –

+0

NSURLConnectionを使用してURLデータを非同期にダウンロードし、NSXMLParserデリゲートを実装するクラスに渡したいと思うでしょう。メインスレッドがちょっとブロックされても気にしないならば、NSXMLParserDelegateを使うことができます。しかし、とにかく、NSURLConnection:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.htmlとNSXMLParserDelegate:http://developer.apple.com/library/mac/ #documentation/cocoa/reference/NSXMLParserDelegate_Protocol/Reference/Reference.html –

答えて

0

サーバー上にパスワードデータをJSON形式で保存することをおすすめします。私は、多くのJSONフレームワークとチュートリアルの1つをWeb上で使用して、アプリケーションにデータをロードする実装を支援します。多くの良いものがあります。 I went through this one when I first worked with JSON on iOS.そこに良いものがあるかもしれません。

このスキームの1つの問題は、パスワードを変更するたびにアプリのユーザーに新しいパスワードが必要になることです。許可されていないユーザーが新しいパスワードを取得しないように、各ユーザーには安全な配布チャネルが必要です。

代わりに、公開鍵/秘密鍵のペア暗号化をデータに使用します。アプリケーションの各インスタンスには秘密鍵があり、一致する公開鍵と関連付けられたユーザーIDを保持します。これは、特定のデバイスでのアプリの初期実行中に電話機のプロセスで設定できます。私は許可された公開鍵でパスワードを暗号化し、すべての暗号化された文字列をサーバー上のJSONファイルにロードします。実行すると、アプリケーションはJSONを通じて暗号化されたパスワード文字列を読み込み、文字列を復号化して既知のパスワードと照合します。正しいパスワードが見つかった場合、アプリは承認され、引き続き実行されます。

次に、1人のユーザーの認証を解除するには、そのユーザーの暗号化されたパスワードをサーバーから削除するだけです。他のすべてのユーザーは、新しいパスワードの通知を受けることなく、引き続き作業します。

追加の公開鍵/秘密鍵のペアを使用してJSONデータに署名することで、さらに高度なセキュリティを適用できます。 JSONは秘密鍵で署名され、すべてのアプリケーションは公開鍵のコピーを取得してJSONデータのソースをチェックします。

iOSアプリはコードに署名する必要があるため、アプリ内でこの保護を邪魔するのは困難です。しかし、JSONデータを保存しておき、あとは敵対する(プロキシに)プロキシサーバーによる中間者攻撃でアプリに提示するというセキュリティホールがあります。 JSONデータには日付を記入して署名することができるので、アプリはそのデータもチェックし、ユーザーを無効にするために必要なタイミングに応じて、設定された時間よりも古いJSONデータを受け付けません。すぐに1週間があれば、これは手作業で済むかもしれませんが、Webサーバー上の自動プロセスとして、数日または数時間程度の時間枠を実装する必要があります。

JSONデータが膨大になりすぎてデータのダウンロードが必要になるまでアプリの配布が増えた場合、JSONデータをセグメント化できます。複数のJSONファイルをサーバーに保存し、ID文字列をファイル名に挿入することでアクセスできます。このID文字列は、特定のデバイスまたは他のメカニズムの初期実行セットアップ中に選択できます。

初回実装の方がはるかに複雑ですが、この方法は、特に新しい認証パスワードを扱う必要がないユーザーにとっては、より安全で管理しやすくなります。