2015-08-24 15 views
0

我有自動增量ID作爲主要的是我所有的數據庫表,如用戶,訂單等,我不希望公開這些ID給最終用戶,因爲它們可能會遍歷標識可以訪問用戶的詳細信息。相反,我想使用雙向數學函數,這樣我就可以在不存儲數據庫映射的情況下對標識進行混淆和去混淆。模糊處理自動增量DB ID,用數學函數

function obfuscate(id) 
{ 
    constSeed = 1203793 
    return (id*constSeed) 
} 

function deobfuscate(bigid) 
{ 
    constSeed = 1203793 
    return (bigid/constSeed) 
} 

我甚至可以運行通過base36轉換器bigid,得到一個更小的字母數字ID,可曝光公開。

這種方法有問題嗎?還有其他建議嗎?

+0

您可以不使用auto_increment並以受控隨機方式生成id。 (如果可以預測出你正在混淆的是什麼類型的數字,那麼它可以更容易地對它們進行反混淆處理或猜測有效的混淆值。)...但是,知道某個ID不應該是主要的安全問題......用戶不應該有這種必要的途徑來利用這些知識。 – Uueerdo

回答

0

如果你不想讓他們訪問這個ID,也許只能在$ _SESSION變量或者這些行中使用它們。

如果數據是對最終用戶可見,即使你散列或加密數據, 它不會是安全的。