有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java停止对用于数据收集的变量的操作?

我正在从事一个java项目,我希望能够从客户端收集统计数据,我担心可能会出现的一个问题是对用于收集的变量的操纵,这将导致非法的统计数据。是否有可能防止变量的操纵,还是总是可能的

例如:我想记录每小时从客户端执行的操作。操作作为已执行操作量计数器的变量,并将更大的量添加到计数器中。然后,这些数据被上传到服务器(当然,使用多层体系结构来防止可能出现的问题),并被认为是“合法的”

有没有办法防止这种情况


共 (2) 个答案

  1. # 1 楼答案

    根据上传数据的方式,有多种方法来保护信息

    如果你正在上传某种文本或数据文件,使用基本加密,甚至是带有密码的ZIP,应该足以阻止临时用户更改信息

    您的应用程序也可以简单地使用RMI或web服务上传信息,而不给用户操作数据的更改

    当然,所有这些都假设应用程序本身收集信息——如果用户有机会输入数据,就没有真正的方法阻止他们向您提供虚假信息

    在不知道这是桌面应用程序还是web应用程序的情况下,我建议您以某种方式对上载文件进行加密。它不必很复杂,只需足够让人无法在文本编辑器中编辑即可

    只要记住,如果某个东西在客户机上运行,它就可以被操纵。Java不是一种安全的语言,就这一点而言,没有任何东西是安全的,虽然你可以做很多事情来保护应用程序,但总有一些更聪明的人可以破解它

  2. # 2 楼答案

    如果我这么做的话,我会在一台安全的机器上积累统计数据。让主要数据收集代码向累加器发送“事件”消息,并让累加器记录原始事件及其到达时间戳。这不会阻止人们操纵统计数据,但会让事后更容易发现可疑模式

    基于这个想法,您可以安排事件生成器应用程序(在用户的计算机上)使用某种涉及共享秘密或公钥/私钥加密的握手。我不认为你能完全保证这一点,但通过默默无闻的安全性足以应对没有反向工程代码技能的人的欺骗企图

    但正如埃瓦尔德所说,任何算法过程都可以由对其运行的硬件拥有足够控制权的人进行逆向工程。如果该过程需要使用“秘密”进行操作,则该秘密可以被泄露