我正在开发一个需要线程对话的项目:有人发布了一些新内容,它创建了一个新线程,并且所有回复都附加到该线程。从技术角度来看,我的工作非常出色,但我担心我的解决方案的安全性:
为了回复一个线程,线程的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。
非常感谢任何帮助!!
答案 0 :(得分:3)
在html中拥有数据库ID不存在安全风险。在任何网站中,您经常会在html和网址中看到它们。重要的是,您在回调中检查当前用户是否有权删除/阅读/回复邮件。