我正在開發一個Web應用程序,向用戶發送電子郵件通知以完成課程/教程。我添加了通過該電子郵件中的鏈接自動登錄用戶的功能。這個功能已被添加到互聯網上的幾個服務中,最着名的是OkCupid。自動登錄最佳做法
下面是我已經成立了我的表:
+----+-------------+-------------------+-----------+--------------+----------------------+
| id | key (22) | secret (40) | user_id | action | expires |
+----+-------------+-------------------+-----------+--------------+----------------------+
| 1 | IbQlQW8Dn...| hdC4dXQJUPA0... | 1 | lesson/14 | 2013-06-21 16:28:55 |
+----+-------------+-------------------+-----------+--------------+----------------------+
當用戶通過電子郵件訪問一個鏈接,像這樣: http://example.com/go/IbQlQW8Dn8PNXJFFwHQxwh/hdC4dXQJUPA0pU7I6eUiXawbnobYv0iThA [HTTP:/example.com/go/ key
/secret
]
服務器首先檢查該URL未過期基於在表中的日期。如果未過期,用戶將自動使用user_id
登錄,然後重定向到action
列中的給定網址。我使用了兩個單獨的值(key
& secret
)作爲增加安全性的URL(防止出錯)。
,因爲現在的網站(視頻課程)的性質,安全性是不是一個巨大的問題,但我還是想知道什麼最佳實踐來考慮。
- 我應該限制次數的鏈接可以用嗎?
- 目前,我有鏈接失效從發送的郵件 60小時(3天)。這應該降低?
- 明顯的兩大風險爲未經授權的訪問包括有人轉發電子郵件或某人獲得訪問用戶的電子郵件帳戶。還有什麼要考慮的?
感謝大家的洞察力,如果這應該被轉移到StackExchange的另一部分,請讓我知道。我知道我以前在這裏看過其他最佳實踐帖子。