2011-12-19 21 views
0

我正在開發一個需要線程對話的項目:有人發佈了新的東西,它創建了一個新線程,並且所有回覆都附加到該線程。從技術角度來看,我的工作非常出色,但我擔心我的解決方案的安全性:在前端編程線程對話的正確方法

爲了回覆線程,線程的ID(簡單地說就是線程的數據庫ID)處於該線程對應的html。這樣,javascript就可以獲得被回覆的線程的線程ID,並使用它通過ajax將響應文本和線程ID傳遞給後端。它也被用來查找HTML在哪裏應該追加回復。

這個網站的一個例子是:

<div id='thread_1' threadId='1'>Hey, how's it going? 
    <div id='replies_1' threadId='1'> 
    </div> 
    <input id='reply_text_1' type='text' value='Reply...' threadId='1'></input> 
    <input id='reply_button_1' type='submit' value='Reply' threadId='1'></input> 
</div> 
<div id='thread_2' threadId='2'>Anyone here? 
    <div id='replies_2' threadId='2'> 
    <div id='reply_2_1'>Yes, I'm here</div> 
    </div> 
    <input id='reply_text_2' type='text' value='Reply...' threadId='2'></input> 
    <input id='reply_button_2' type='submit' value='Reply' threadId='2'></input> 
</div> 

看起來就像在前端代碼數據庫ID的它不會是一個好主意 - 這似乎是一個潛在的安全風險。問題是,我怎樣才能以安全的方式做到這一點?我如何將前端的線程響應與後端數據庫中的線程關聯,而不公開我的數據庫ID?

僅供參考 - 如有幫助,後端是Java + Spring + Hibernate。

任何幫助非常感謝!

回答

3

在html中擁有數據庫ID不是安全風險。在任何網站中,您經常會在html和網址中看到它們。重要的是,你檢查你的回調,目前的用戶有權刪除/閱讀/回覆郵件。

+1

它可能是一個維護問題,如果你傳遞表'JOIN'列(並刪除行,然後重新組織ID);你可能會考慮生成某種「外部」id,這不是一個連接列(可能是原始行的散列)。除此之外,ID_不能獨自承擔安全風險 - 畢竟,您必須有一些獨特的方式來引用該線程。但請注意用戶權限。 – 2011-12-19 16:39:29

+0

這些評論是一個很好的幫助...我絕對感覺好一點,不必重做一切!我認爲關於外部身份證的建議是一個很好的建議,並且肯定會實現這一點。關於用戶權限的好處也是......我已經構建出來了,應該對網站的第一次迭代很有幫助。再次感謝!! – threejeez 2011-12-19 16:50:53

+0

@Miles - 如果你真的感覺肛門,你也可以散列這些ID。 :) – ericvg 2011-12-19 18:17:20

相關問題