我有一个jnlp应用程序,用于在用户计算机上加载和执行jar文件(客户端)。用户使用此jar与提供服务的服务器通信。我见过用户使用javassit和javasnoop来改变客户端的功能。有什么方法可以远程检测前面提到的实用程序创建的更改吗?例如,我可以在本地校验类并将结果发送到服务器(谁知道每个类的正确校验和)?
答案 0 :(得分:2)
通常无法阻止客户端运行他们希望的任何代码。您的系统的安全性绝不应该依赖于假设客户端正在运行特定代码或者不知道您发送它们的jar中包含的特定信息。
此外,强制实施DRM的尝试往往会给合法用户带来问题并疏远您的客户,同时做些什么来阻止实际上想要破解系统的人。
答案 1 :(得分:1)
例如,您可以创建java文件的校验和,并使应用程序在运行时计算校验和,并将其发送给服务器进行验证。最简单的校验和是整个jar的哈希码。
唯一的问题是为什么?谁是超级用户拿着你的罐子并对其进行检测?为什么他这样做?即使他有理由,谁在乎呢?如果你担心有人会破解你的服务器,那么<em>它足够安全并且不关心客户端(恕我直言)。
答案 2 :(得分:0)
您可以使用Classloader.getResourceAsStream(p1.p2.ClName
)打开名为"/p1/p2/ClName.class"
的类文件,读取它并计算其校验和。
但是,由于用户可以更改功能,他还可以删除校验和检查。