2016-07-15 29 views
1

我正在開發移動應用程序。如果我選擇通過電子郵件執行大部分用戶查找,是否有任何問題?例如,當用戶註冊時,我只會將他們的電子郵件保存在電話緩存中,並自動讓他們登錄下一個打開的電話。當用戶登錄時,我會根據他們在文本字段中輸入的電子郵件(假設密碼正確)搜索該用戶的信息。我可能會遇到任何問題,或許電子郵件無法在數據庫中匹配?另外我假設我也會在數據庫中的電子郵件字段中放置索引?用電子郵件而不是用戶操作有什麼不對嗎?

也有任何安全隱患在電話緩存中保存用戶的電子郵件?是否有人可以欺騙(這樣他們可以使用別人的用戶信息)?

+1

人們可能不想給你他們的電子郵件地址。人們有時會更改其電子郵件地址雖然電子郵件地址可能是人們登錄的好方法,但由於他們可能會記住它並且它應該是唯一的,所以在您的數據庫中它應該是用戶的屬性。應該有一些其他獨特的,不變的密鑰,實際上標識用戶 – Paulw11

+0

在一天結束時,用戶很有可能忘記他們的密碼,他們的電子郵件地址是無論如何提供重置。想象網絡用戶放棄他們的賬戶,或者被迫打電話有點愚蠢。 – Drew

回答

1

如果您的通信信道是安全的,例如TLS(SSL),然後用戶在輸入

101 
[email protected] 
Excalibur10X 

加認證期間一個密碼都從該方面同樣細。溝通是安全的,並且不爲其他方和服務器跳躍所知。請注意,我說如果。

它假定您執行了安全註冊,您的頁面是安全的。此後,您將維護一些會話狀態Application Server。您遵循最佳做法以避免會話劫持。這意味着,在認證之後,您不會回退到非安全頁面,並在清除時傳遞用戶信息或允許劫持。

至於數據庫性能,保存自然鍵或非計算機生成的id是好的。性能會稍微慢一些。希望不久我可以用更寬的密鑰來記錄數千萬分貝的數據,比如說4個字節的數據。任何人都會告訴你它會一樣快,不用擔心它會使用小型數據庫,或者不會使用指標進行備份。證明是在複雜的連接中,而不是簡單的一行查找。

不泄漏信息。不要允許SQL注入。保持前面和最重要的。

+0

在我的情況下,我會緩存電話中的電子郵件(我想這相當於網站上的會話)。 NSUserDefaults是準確的。你知道用戶是否可以在緩存中欺騙保存的數據? –

+0

服務器端的會話意味着與客戶端緩存或記憶完全不同的東西。 – Drew

+1

謝謝德魯。 –

相關問題