2016-07-15 4 views
1

私はモバイルアプリケーションを開発中です。私が電子メールでユーザー検索の大部分を行うことを選択した場合、何か問題はありますか?たとえば、ユーザーが登録すると、自分の電子メールを電話キャッシュに保存し、自動的に次回にログインするようにします。また、ユーザーがログインすると、テキストフィールドに入力した電子メールに基づいてそのユーザーの情報を検索します(パスワードが正しいと仮定して)。私はこれを実行するために実行する可能性のある問題はありますか?電子メールがデータベースで一致しない可能性がありますか?また、私はデータベースのメールフィールドにインデックスを置くことを前提にしていますか?IDの代わりに電子メールでユーザー操作を行うのに間違いはありますか?

また、ユーザーの電子メールを電話キャッシュに保存するセキュリティ上のリスクはありますか?誰かがそれを偽装することは可能ですか(他人のユーザー情報を使用することができますか?)

+1

人々はあなたにメールアドレスを提供したくないかもしれません。人々は時折自分のメールアドレスを変更します。電子メールアドレスは、ユーザーがログインするための良い方法ですが、おそらくそれを覚えている可能性があり、データベース内で一意でなければならないため、ユーザーの属性にする必要があります。ユーザーを実際に識別する一意で不変な他のキーがあるはずです – Paulw11

+0

その日の終わりに、ユーザーはパスワードを忘れる可能性が高く、電子メールアドレスはリセットを送信するものです。ウェブユーザーが自分のアカウントを放棄したり、電話をかけたりすることを想像するのはちょっとばかげている。 – Drew

答えて

1

あなたの通信チャネルは、TLS(SSL)として安全である場合、認証時の

101 
[email protected] 
Excalibur10X 

プラスパスワードを入力するユーザーは、その側面から全て均等に罰金です。通信は安全で、他の関係者やサーバーホップには知られていません。注意してください、もし私が言った。

セキュリティで保護された登録を実行したことを前提としており、ページは安全です。その後、セッション状態のアプリケーションサーバーをいくつか維持します。セッションのハイジャックを避けるためのベストプラクティスに従います。つまり、認証後、非セキュアページに戻ったり、ユーザー情報をクリアまたはハイジャックを許可したりすることはありません。

データベースのパフォーマンスは、ナチュラルキーやコンピュータで生成されていないIDを保存しても問題ありません。パフォーマンスは若干遅くなります。うまくいけば、私は、例えば、4バイトのintと比べて、より広いキーで数十万のdbのその側面を文書化することができます。誰もが速く、小さなデータベースを使用しているか、メトリックでバックアップしないことを心配しないでください。証明は複雑な結合であり、簡単な1行のルックアップではありません。

情報を漏らさないでください。 SQLインジェクションを許可しない。それらを最前線にとどめてください。

+0

私の場合、私は電話で電子メールをキャッシュしています(私はそれがウェブサイトのセッションに相当すると思います)。 NSUserDefaultsは正確です。ユーザーが保存されたデータをキャッシュにスプーフィングすることが可能かどうかを知っていますか? –

+0

サーバー側のセッションは、クライアントサイドのキャッシュまたは記憶とはまったく異なる、正当なもののためのものです。 – Drew

+1

ありがとうございました。 –

関連する問題