我試圖混淆所有離開服務器的標識符,即出現在URL和HTML輸出中的標識符。Rails應用程序中的模糊標識
我已經寫了一個簡單的Base62庫,它有方法編碼和解碼。定義或更好地覆蓋ActiveRecord的id方法以返回id的編碼版本並調整控制器以加載解碼後的資源給我期望的結果。這些id現在在url中被base62編碼,並且響應顯示正確的資源。
現在我開始注意到,通過has_many
關係定義的子資源未加載。例如我有一個記錄叫User
那has_many
Post
s。現在User.find(1).posts
是空的,雖然有帖子user_id = 1
。我的解釋是,ActiveRecord必須將user_id
的Post
與方法id
的User
(我已覆蓋)而不是與self[:id]
進行比較。所以基本上這使我的方法無用。
我想要的是類似於在模型中定義obfuscates_id
,其餘的將被照顧,即在適當的位置進行所有編碼/解碼並且防止服務器返回ID。
是否有任何寶石可用或有人提示如何實現這一目標?我敢打賭,我不是第一次嘗試這個。
浪費時間浪費本來可以用於提高整體安全時間。還是有另一個混淆原因? – LukeN 2010-05-11 22:25:45
ID混淆不是一個安全測量恕我直言。它只隱藏ID中包含的某些信息,例如網站上有多少註冊用戶或有多少帖子。用簡單的base62編碼版本替換它們並不能揭示這種信息。我不願意因此而失去太多時間,這就是爲什麼如果我可以簡單地在模型中調用'obfuscates_id'會很酷。 – fphilipe 2010-05-11 22:35:19
重要的是網站上有多少用戶或帖子? – Earlz 2010-05-11 22:36:45