我正在将薪资和考勤监控系统作为学校项目。 目前使用Java Swing和Joda API。 我参加了出勤监控。 我想要一个安全限制,即使用户改变系统时间他也不能尽早作弊。
我该如何实施?
答案 0 :(得分:2)
如果你信任用户计算机上的任何东西,这是一个糟糕的开始IMO。 (什么阻止用户手动修改记录的数据?)通常情况下,您可以信任的服务器都会参与其中。然而,这是另一回事,我很欣赏这是一个学校项目。
要解决所问的问题 - 如果你不能在本地信任任何东西,你应该考虑一下互联网时间提供者。 Joda Time没有具体的内容 - 你可能找到“Joda Time集成”库与NTP服务器通信,但我认为你更有可能只是得到暴露了自从某个时代以香草方式出现的毫秒数(或微秒,或纳秒)。从那里构建相关的Joda Time类型应该很容易。请注意,不要使用隐式使用本地设置的Joda Time类型(不仅仅是时钟 - 也要考虑时区!)。
答案 1 :(得分:0)
您的学校可能没有系统管理员可以阻止对已安装的计算机进行未经授权的访问。因此,解决方法可能是实现接口
然后按DateTimeUtils.setCurrentMillisProvider(...)
安装接口的正确(安全)实现应该通过互联网使用SNTP服务器(例如Apache-NTP-client)(如果学校可以这样做)。否则,基于System.currentTimeMillis()
的每个时钟都适用于外部时钟调整。