0

我正在为我们的项目编写一个许可证管理系统,它的正常工作非常重要。我在一个包中编写了一些可公开访问的方法;例如

// code to check correctness of password
public boolean checkIfPasswordIsCorrect(String password){
   // my code here
}

现在我担心是否有人更改我的.class文件.jar.war文件。然后,例如,他或她可以重写我的类和方法,使其始终返回 true;之后我的系统将无法正常工作,这意味着始终授权用户访问其服务

也许有一个解决方案只是混淆我的代码以更改类或包的名称并在发布步骤中混合我的代码。还有其他想法吗?谢谢。

编辑:我不想发布我的代码;我只是向客户发布编译好的.jar文件。.war

4

1 回答 1

4

您可以签署您的代码以防止有人更改它并将其提供给其他人,假装它是“官方”版本。

您不能阻止任何人更改他们自己运行的代码。

如果他们以这种方式破坏程序,那是他们的错。如果他们能以这种方式破坏您的系统(例如未经授权访问其他人的文件),那么这是您系统中的设计缺陷。您不能依赖未修改的客户端软件。不得篡改的代码需要在您的机器上运行并且可以作为服务访问。

实际示例:不要检查密码然后授予对本地文件的访问权限(可以通过更改该代码来规避),而是使用密码加密文件(这样如果你不这样做就无法访问它知道密码,不管你怎么弄乱代码)。或者将文件保存在服务器上,只有在提供密码(您在服务器上检查)的情况下才允许访问。

于 2013-09-07T07:38:18.627 回答