0

ユーザーが登録し、メールアドレス/パスワードでサインインするシンプルなiPhoneアプリを開発しています。これらの値はリモートデータベースに保存されます。

Cloudantを使用してこの情報を保存し(CouchDBは素晴らしい)、新しいユーザーに読み取り専用特権を付与しました(作成されたAPIキー/パス)。Cloudantと通信するには、明らかにそれにアクセスするためのURL(https:// user:pass@db.cloudant.comなど)が必要です。これは、アプリに文字列として保存されます。

さて、これはかなり安全ではないことはわかっていますが、db URL(具体的にはそのユーザー名/パスワード)を安全に保つための他の方法は考えられません。クレデンシャルを取得するためにプロキシを介して別のサーバーを使用することについて人々が話しているのを見たことがありますが、それは少し厄介なようです。

どんな助けや考えも本当にありがたいです!

4

2 に答える 2

1

iPhoneアプリからデータベースに直接接続しようとしていますか?アプリにリモートユーザーテーブル/データベース全体への読み取りアクセスを許可しないでください。遅かれ早かれ、誰かがあなたのデータを見つけて読み取りアクセスできるようになるでしょう。どのように難読化しようとしても、ユーザーとパスワードの組み合わせを何らかの方法でアプリに保存する必要があります。

あなたがすべきことは、DBに接続してユーザーを検証するWebサービスを構築することです。データベースのパスワードはサーバーに残ります。このプロキシアプローチは厄介ではなく、データベースログインをユーザーから遠ざける唯一の方法です。

于 2012-01-06T23:51:56.533 に答える
1

1つのオプションは、ストレージを抽象化する独自のサービスをクラウドに作成することです。また、すべてのデバイスを更新せずにストレージを変更できるという利点もあります。

このモデルでは、サービスはストレージにアクセスするための資格情報を保存し、アプリケーション層にユーザーセキュリティを実装します。また、プロキシレイヤーとは考えていません。これは、薄いパススルーであることを意味します。サービスを開発する場合は、ストレージに依存しないWebインターフェース(REST、Soap)を定義する必要があります。その場合、それはプロキシではなくサービスです。

編集:

通常、Webサービスはユーザーを認証します(独自に作成しないでください)。SSLを使用した基本認証が一般的です。次に、そのサービスコンテキストAPIで、ユーザー名にアクセスできます。そこから、必要なことを行います。ストレージには、すべてのコンテンツへのフルアクセス権を持つ1つのストレージアカウントでアクセスします。

もう1つの認証オプションはOAuthです。これにより、Googleのような誰かと認証することができます。パスワードを取得することはありません。Googleからのトークンで、認証された人物であり、本人であることを通知します。たとえば、これがスタックオーバーフローの仕組みです。

于 2012-01-06T23:52:38.000 に答える