注意:java程序,服务器使用php,mysql...文件是.log或.txt文件
我有一个程序,它从 txt 文件中获取最后一行,并通过 HTTP 请求将其发送到服务器。该文件是由外部程序编写的,但用户可以打开它并进行修改。
这些行采用这种格式,并且时间将采用本地计算机时间。
[hh:mm:ss] 留言
如果我认为(真实)消息中的时间是计算机中的时间,我可以通过与固定位置的时间进行比较来使用它来验证新鲜度和有效性吗? (服务器时间、gtm 时间等)
用户可能在世界任何地方,我不能保证本地机器上的时间是准确的。我的想法是启动程序并检查机器上的时间,并将其与我的外部时间进行比较。然后以某种方式设法确保该消息不是由用户完成的...例如消息应该必须是20s~计算机时间并且计算机中的时间应该与外部时间同步。
从未做过这样的事情,但真的很感兴趣。
(我知道永远不会有黑客证明的程序,但希望使其尽可能困难)
谢谢,如果需要,我会在下午添加详细信息。
最佳答案
时间问题的两个选项:
如果您可以修改创建文件的程序,请始终使用固定时区来写入时间。这将确保所有时区的时间都是准确的。
或者您可以将时区与时间一起写入,并在服务器端进行相应计算。
关于用户篡改数据:
我建议您生成消息的 MD5 哈希值并将其发送。然后在服务器端再次根据消息内容计算MD5。如果哈希值与传递给服务器的 MD5 不匹配,则意味着用户篡改了数据。
关于java - 消息新鲜度和有效性 JAVA PHP mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9078231/