2016-03-21 17 views
0

例如我在我的mysql表用戶中有一個字段user-id,它唯一標識一個用戶。如果有人要求例如用戶的朋友列表,我會返回一個json數組女巫,其中包括每個朋友的用戶標識和附加數據(如姓名)。在REST中通過id直接標識mysql條目是個好主意嗎?

所以我的問題是,如果這是一個好主意,直​​接發送這些用戶ID到客戶端。這是不安全的嗎?有沒有方法隱藏ID?

問候

+0

下面是@tadman的出色答案。同樣重要的是,不要相信客戶未經驗證就發送迴應用程序的這樣的ID。如果客戶端說「刪除消息256512」...不這樣做,沒有驗證客戶端應該確實被允許請求刪除該消息。經典n00b錯誤。客戶永遠不會被信任。 –

回答

1

這取決於是否泄漏從您的應用程序ID信息是一個嚴重的問題或沒有。如果您處於競爭激烈的業務中,知道系統上的用戶數量是有價值的信息,或者您擔心有人可能會按順序逐步通過它們來系統地下載您的數據庫,那麼加擾它們確實有幫助。

使用加密隨機標識符或UUID是解決此問題的兩種較常見的方法。一個真正隨機的標識符提供更多的安全性,但需要更多的關注來構建,因爲有很多方法可能導致錯誤。

值得注意的是像Stack Overflow這樣的網站會泄漏用戶ID,因爲在隱藏它們時沒有任何價值。例如,您的個人資料鏈接中包含用戶ID:2441032.

+1

感謝您的回答!我注意到,即使Facebook泄漏用戶ID https://www.facebook.com/profile.php?id=4。反正uuids看起來更專業但性價比很高。 – FunnyItsElmo

+0

沒有真正的巨大性能成本。對於面向公衆的接口使用替代表示方法只是一小部分工作。即使Ruby可以每秒生成100K UUID。 – tadman

相關問題