我有一个可以作为Eclipse插件自由分发的工具,这意味着我无法跟踪谁使用它或要求他们注册。
每个客户端工具都通过JMS代理与单个共享服务器进程(用Java编写)进行通信,并且可以接收回复的消息。服务器通过Hibernate连接到MySQL数据库。
目前,该工具发送的唯一消息是对数据的请求,服务器获取消息并将大量表示元素的XML数据发送到客户端,该客户端在IDE中显示相应的项目。因此,除了DoS攻击之外,我认为除了DoS攻击之外,还有很多事情可以做到。
然而,现在,我想添加以下功能:用户可以为特定元素(由数字ID标识)分配评级,并且将消息发送到服务器,该服务器将评级存储为事件在评级事件表中。当下一个数据请求进入时,每个项目的平均评级将随请求一起发送。
我的问题是我从未部署过使用像这样的公共服务器的工具,即使它被JMS代理隐藏了。可以对我部署什么攻击,我该如何防御它们?
存在DoS的问题,我不确定如何解决它。
有可能注射,但我的所有数据都是数字,我不知道hibernate如何处理事物。
存在垃圾邮件或虚拟投票的问题,我无法真正想到如何解决这个问题。
我确定还有其他人......
答案 0 :(得分:1)
关于虚拟投票,这不安全(即选举目的不可接受!)但这是一个简单的机制:
在服务器上创建GUID,将其存储在适当的表中并发送给客户端。当客户投票时,它会发回GUID,并将其与数据库进行比较。如果GUID有效,请接受投票并删除数据库存储的GUID。