我注意到,SO和其他網站使用用戶表的自動遞增主鍵作爲公開可見的用戶ID(至少我認爲這是他們在做什麼)。就SO而言,如果您知道或可以猜出他們的用戶ID,則可以查看用戶的個人資料。使auto_incremented用戶標識可見的注意事項?
執行類似風格的用戶標識生成之前需要考慮的事項有哪些?我正在開發一個非商業應用程序,它依賴於「朋友」的概念來指定用戶之間的各種權限,但我希望所有用戶的基本配置文件都可以通過簡單的URL(如app.com/users/userid
)進行查看。更詳細的配置文件信息只能由該用戶已經確認的該用戶的「朋友」訪問。
我想我的問題是,用戶ID的「可猜測性」是否表明系統的固有安全性,或者說,是否所有的方式都是單個功能實際實現的?有什麼我可能沒有考慮到這個會使它變得不明智嗎?任何我應該完全避免使用這些用戶id的方法?
附註:我不擔心「競爭對手」會根據最近用戶的數量或用戶之間的變化率知道或猜測我有多少用戶。
我給每個用戶一個auto-inc id和一個32個字符的隨機哈希,這取決於我在哪裏使用它們,哈希提供了防止猜測id的保護。 – 2012-02-23 19:46:44
我同意@Dagon。 Keys將您的表格鏈接在一起,您還可以創建可公開共享的唯一'ID',並仍可用於識別單個記錄。這些ID可以改變,而鍵不應該改變。 – 2012-02-23 19:48:46
之前已經詢問過這個問題,可以自由地搜索該網站以找到一些有見地的以前的討論,例如, [在Web應用程序中使用「自定義」用戶ID而不是用戶的真實auto_incremented數據庫ID?](http://stackoverflow.com/questions/3739833/using-a-custom-user-id-as-opposed-到用戶實際自動增量數據庫)或[是mysql自動增量安全作爲用戶ID使用?](http://stackoverflow.com/q/8078912/367456) – hakre 2012-02-23 19:50:58