我正在开发一个需要线程对话的项目:有人发布了一些新内容,这会创建一个新线程,并且所有回复都附加到该线程。从技术角度来看,我的这个工作很好,但我担心我的解决方案的安全性:
为了回复某个线程,该线程的id,简单来说就是该线程的数据库id,在该线程对应的html中。这样,javascript 就可以获取正在回复的线程的线程 id,并使用它通过 ajax 将响应文本和线程 id 传递到后端。它还用于查找 html 中应附加回复的位置。
此 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。
非常感谢任何帮助!!
最佳答案
在 html 中包含数据库 ID 不会带来安全风险。在任何网站中,您经常会在 html 和 URL 中看到它们。重要的是您在回调中检查当前用户是否有权删除/读取/回复消息。
关于java - 在前端编程线程对话的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8564252/