私有部署如何避免代码泄露?如何限制服务有效期?

2021-10-13 09:51:44 +08:00
 balabalaguguji

需要给客户部署 web 服务到他们服务器,想给他一个注册码,填入后就可以获得一年有效期,到期后无法使用,就类似 jetbrains 的付费方式。

但是服务端代码如果是 js/python 这类脚本语言,代码都是明文的,不好做有效期的逻辑,别人直接改掉就没了,有什么办法做到呢?

8523 次点击
所在节点    信息安全
69 条回复
est
2021-10-13 11:13:12 +08:00
python 的话,简单。你跑起来后把本地工程目录文件全删了就行

(当然你不能搞什么动态 import 了。
6IbA2bj5ip3tK49j
2021-10-13 11:14:59 +08:00
intellij 的到期之后,还是可以用的,只是不能升级了。
kekxv
2021-10-13 11:18:16 +08:00
不加密,发现了就警告并准备发生律师函,这不简单多了
efaun
2021-10-13 11:18:29 +08:00
@balabalaguguji #11 我说的是硬件,插在 usb 接口上的,初始化系统就必须一直插着,有任何断联行为就必须回单位激活,海关就用的这
zjsxwc
2021-10-13 11:22:38 +08:00
业务代码混淆就行,目的仅仅只是增加修改和添加新业务的难度,而不是防破解,
真要破解的话,防不住的,
君不见市面上那么多商业软件都会有对应的破解注册机出来,这些商业软件可都是编译成二进制的。
Ansen
2021-10-13 11:22:54 +08:00
@est #21 这操作可太骚了
Aprilming
2021-10-13 11:25:41 +08:00
我们是做 license , 前提是客户的服务器,但是服务器密码,grub 密码,就我们自己清楚。
zjsxwc
2021-10-13 11:29:33 +08:00
而且有 libfaketime ( https://github.com/wolfcw/libfaketime ) 这肆意修改进程时间的库存在,
有效期保护只能防君子,

比如 `faketime '2018-12-24 08:15:42' /idea.sh` 无限白嫖 idea
cheng6563
2021-10-13 11:32:26 +08:00
用 c,go,rust 之类的语言写几个关键并通用的逻辑做成.so/.dll ,比如登录密码校验,数据序列化时的加密解密。然后业务代码再混淆一下。
ersic
2021-10-13 11:32:30 +08:00
有合同的话不怕吧,到期他继续用就起诉呗。
pkoukk
2021-10-13 11:51:58 +08:00
pyhon 和 nodejs 都可以调用 c 库的
把一些核心操作和权限一起封进 c 里调用,比如数据的序列化 /反序列化。
pkoukk
2021-10-13 11:53:52 +08:00
不需要太高的破解难度,只需要让他们破解的成本增加就行了
makelove
2021-10-13 12:00:38 +08:00
@pkoukk 什么调用 C 库,调用在线验证,只要把调用代码空掉就没用了,C 库里写出花也是白干
dangyuluo
2021-10-13 12:03:03 +08:00
二进制层面都是明文啦
cookgo
2021-10-13 12:15:30 +08:00
用 C/C++/Rust/Golang 写一个二进制程序,授权到期了,直接杀掉 Js/Python 服务的进程。
vinsony
2021-10-13 12:47:36 +08:00
我之前用 js 写服务端,也是用 webpack 打包成一个文件了的,体积小还方便部署,代码经过 webpack 之后也变得比较难读。
当然这还不够,还要防止 js 文件里的关键判断被轻易找到。比如你限制使用日期,就不要直接写年月日进去,可以写成 if (time > 17e11)这种。然后过期了你也不要输出提示信息,防止被搜索到,直接让程序挂掉或者数据错乱就好了。
js 可以有很多骚操作,比如你可以在任何地方污染一下原型,写法也多种多样,比如 Object.defineProperty(Array.prototype, 'fil' + 'ter', {}),这样用到 filter 的地方就会 GG 了,只要你把污染的方法名字变化一下,他搜对应的接口或者关键字,毛都搜不到~
xiangyuecn
2021-10-13 12:53:19 +08:00
extend #21 你跑起来后把本地工程目录文件全删了就行 {
1. 源码打个加密压缩包
2. 启动时校验授权,解压缩到其他很难找到的目录,启动代码直接明文,但写的鬼都不认识
3. 正常运行

- 源码内也加授权校验代码,也写的鬼都不认识
}

就问骚不骚😂😂😂
xuanbg
2021-10-13 13:01:25 +08:00
核心逻辑放在自己服务器上面提供远程调用。当然这个逻辑不能是高频的那种。
est
2021-10-13 13:34:34 +08:00
@xiangyuecn 既然你都启动时校验授权了,那么 python 可以直接从远端 zip 进行 import 。源代码根本都不用落盘。
pkoukk
2021-10-13 13:45:38 +08:00
@makelove
nodejs 里的 buffer 就是 c 实现的,请你把 buffer 这块代码空掉再试试,你看还跑得起来不

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/807464

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX