发布于 2019-07-07 07:33:33
客户端代码混淆永远不会完全阻止它。使用服务器代替.
混淆
如果客户端应用程序包含模型,那么用户将能够以某种方式提取它。您可以使用户更难,但这将永远是可能的。一些使它变得更难的技术是:
model.predict
函数上设置一个断点并从那里调试代码将非常容易。通过混淆库及其API,这将变得更加困难。即使您的代码是完全混淆和良好保护,您的客户端代码仍然包含您的模型某处。有了这些方法,就可以以某种方式提取模型。
服务器端方法
为了不可能得到你的模型,你需要一种不同的方法。只把你的“愚蠢逻辑”放在客户身上。排除要保护的代码部分。相反,您可以在服务器上提供一个API来执行代码的“受保护部分”。
这样,您将不再在客户端运行model.predict
,而是向后端(带有参数)发出AJAX请求,然后返回结果。这样,用户只看到输入和输出,而不能提取模型本身。
请记住,这意味着要做更多的工作,因为您不仅必须为客户端应用程序编写代码,而且还要为服务器端应用程序编写代码,包括API。取决于应用程序的外观(例如:它有登录吗?),这可能是更多的代码。
发布于 2020-08-26 01:49:15
另一种保护模型的方法是将模型分割成多个块。在服务器端放置一些块,在客户端放置一些块。这种方法也可能带来大量的工程工作,但是一旦这样做,您就可以在服务器和客户端之间权衡计算负载和网络延迟。用户只能得到一些模型块,这是无用的,而不与服务器端块合作。
https://stackoverflow.com/questions/56919400
复制相似问题