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。
任何幫助非常感謝!
它可能是一個維護問題,如果你傳遞表'JOIN'列(並刪除行,然後重新組織ID);你可能會考慮生成某種「外部」id,這不是一個連接列(可能是原始行的散列)。除此之外,ID_不能獨自承擔安全風險 - 畢竟,您必須有一些獨特的方式來引用該線程。但請注意用戶權限。 – 2011-12-19 16:39:29
這些評論是一個很好的幫助...我絕對感覺好一點,不必重做一切!我認爲關於外部身份證的建議是一個很好的建議,並且肯定會實現這一點。關於用戶權限的好處也是......我已經構建出來了,應該對網站的第一次迭代很有幫助。再次感謝!! – threejeez 2011-12-19 16:50:53
@Miles - 如果你真的感覺肛門,你也可以散列這些ID。 :) – ericvg 2011-12-19 18:17:20