知道很多人第一反应就是:“要做到防窃取是不可能的,毕竟你都输出到浏览器了,别人想怎么拿就怎么拿,顶多 js 混淆一下”。
但是目前即使混淆了,这个大的函数还是可以信手拈来开箱即用,想问问 V 友们,有没有结合 php 后端来实现前端代码防止窃取的手段?
1
workwonder 2017-09-23 16:10:28 +08:00 via Android 16
代码不被复用还有价值可言吗
|
2
qwertyssp 2017-09-23 16:14:06 +08:00
敌军。。。
|
3
qiqico 2017-09-23 16:14:44 +08:00
很想知道这段代码功能是什么
|
4
chcx 2017-09-23 16:16:33 +08:00 1
写的尽量恶心,让别人看到也不想用。。
(支持 1L 的观点) 哈哈哈(逃 |
5
momocraft 2017-09-23 16:20:33 +08:00
拆开分散到各处 让人难以发现且不想抄
|
6
artandlol 2017-09-23 16:21:11 +08:00 via Android
留个时间炸弹
|
7
Sanko 2017-09-23 16:24:42 +08:00 2
加 bug
|
8
doubleflower 2017-09-23 16:25:02 +08:00
浏览器能运行那就不能阻止别人拿来用。
除非你把一部分算法运行在服务器端。 |
9
congeec 2017-09-23 16:29:43 +08:00 via iPhone
@workwonder 自己复用和别人复用是两回事儿。要不 Facebook 最近协议的事儿怎么闹这么大
|
10
123s 2017-09-23 16:31:50 +08:00 3
你自己写得久不代表别人也久?
|
11
likuku 2017-09-23 16:32:31 +08:00
换用 C 重写一个功能型 web 服务器
|
12
Mistwave 2017-09-23 16:33:31 +08:00 via iPhone 6
既然是防止被“窃取”,那就开源吧,加上 Apache License 2.0
|
13
marvinwilliam 2017-09-23 16:33:51 +08:00
直接混淆就行了,实在不行,你开个仓库,然后把开源协议什么的都放上.
|
14
zjsxwc 2017-09-23 16:38:16 +08:00
同意开源并且使用 协议限制
|
15
tonghuashuai 2017-09-23 16:41:06 +08:00 via Android 18
更多的想法是:花了很久写的一个功能型 js 代码,怎么能让更多的人用在项目上呢?
|
16
Icemic 2017-09-23 16:41:57 +08:00 1
用 ES6+写,然后用 babel 处理成 ES5 ……能反推出代码的大概能力在你之上,也就没必要盗用你的东西了
|
17
flyingheart 2017-09-23 16:46:03 +08:00
用 Facebook 的 React.js 一样的协议开源
谁用你就去怼他 |
18
qdwang 2017-09-23 16:51:03 +08:00 via iPhone
当然可以 在函数的必要运算步骤 加上不同类型的 checkpoint,在传入的地方需要传入一种验证码。持有验证码能通过 checkpoint 的执行才能运行。难度是你得把检测过程混合在实际代码里。
另一个方法是自己写一个虚拟机,然后用这个虚拟机字节码来执行你的程序。在虚拟机里面可以加很多猛药。 |
19
msputup 2017-09-23 16:53:17 +08:00
多重混淆咯。
反正我是不想看这种代码,所以我也不想告诉你怎么混。哈哈哈 |
20
tabris17 2017-09-23 17:02:47 +08:00 1
用 typescript 或其他中间语言写,编译后的代码可读性差,加一点其他的验证,比如域名验证、页面特征验证,未通过验证的不定时出错。人家破解起来麻烦就不高兴用了
|
21
cisisustring 2017-09-23 17:06:55 +08:00 via Android 2
谢谢楼主,让我知道了开源作者们伟大的技术和情操
|
22
neoblackcap 2017-09-23 17:09:57 +08:00 1
用 AGPL 发布,然后谁用了就找法务去告他
|
23
ltux 2017-09-23 17:10:30 +08:00 17
我觉得以能问这种问题的人的水平,应该写不出能让人想盗用的代码的。
|
24
sublime 2017-09-23 17:12:27 +08:00
楼主想太多系列
|
25
Sikoay 2017-09-23 17:39:31 +08:00 via Android
服务端重写,别人就没法看到了吧
|
26
keenwon 2017-09-23 17:44:25 +08:00
好奇这代码有多牛
|
27
learnshare 2017-09-23 17:50:58 +08:00
多么有价值的代码,还要别人看?
|
28
whtsky 2017-09-23 18:06:33 +08:00 via iPad
申请专利
|
29
Lisp 2017-09-23 18:08:38 +08:00 via iPhone
都压缩了,别人拿来还有用吗?
|
30
noe132 2017-09-23 18:09:45 +08:00 via Android 1
当然是用 JavaScript 实现一个 jvm,然后用 java 重写
|
31
carlclone 2017-09-23 18:17:16 +08:00 via Android 2
放心吧,能问这种问题的人写不出别人想窃取的东西,活在自己的世界就好😄
|
32
Sricen 2017-09-23 18:18:31 +08:00
你想一下当你用别人开源代码的时候 0 0 我觉的楼主需要考虑的是去研究更深的技术,当你无法避免抄袭的时候,还不如换个思路更好的发挥作用,直接加开源协议不是更好么
|
33
hst001 2017-09-23 18:22:24 +08:00
总感觉这种事跟买彩票一样,想得太多
|
34
sfree2005 2017-09-23 19:12:18 +08:00 via Android 1
你还可以从另外一个角度去考虑,就是这段 js 代码是不是一定不能用服务器端写,或者将部分逻辑运算什么的搬回到服务器?
|
35
loveCoding 2017-09-23 19:14:39 +08:00
服务器端调用 , 对外暴露一个接口行吗?
|
36
ianchn 2017-09-23 19:56:13 +08:00 1
|
37
sunjourney 2017-09-23 19:58:34 +08:00 2
跟你业务相关的代码,对别人无意义,通用的功能代码,恕我直言,十有八九 github 有写得更好的实现,你稍微混淆下别人就没兴趣研究了。
|
38
hjc4869 2017-09-23 20:01:33 +08:00 via iPhone
申请算法专利然后 MIT 开源,不给专利 license 或者承诺
|
39
wdlth 2017-09-23 20:03:54 +08:00
写一个 3 天编码,5 年填坑的东西,应该就没人会“窃取”了。
|
40
murmur 2017-09-23 20:15:06 +08:00
特效之类的想抄我都不会抄 有你的创意 有你的素材 调试你的 css 然后山寨个差不多的就分分钟
别人感兴趣的是你的加密部分或者防爬虫部分 |
41
abcbuzhiming 2017-09-23 20:36:49 +08:00
楼主,你这性格,还是去研究后端吧,完美符合你的要求,代码几乎没法被人看到
另外说一句,前端的代码,我宁愿去 github 上翻,也懒得翻某个页面上的,你还能有人家开源的写的牛逼 |
42
rekulas 2017-09-23 21:12:09 +08:00
https://gist.github.com/creaktive/978540
前端加载 js linux 虚拟机 ,然后运行 c 语言程序进行操作 |
43
blackmiaool 2017-09-23 21:26:14 +08:00 1
https://github.com/blackmiaool/decent-messup 在代码里加点验证, 然后用这个混淆下
|
44
Wicked 2017-09-23 21:37:50 +08:00 via iPhone
藏着掖着干嘛,开源之后使劲推销才是正途
|
45
scriptB0y 2017-09-23 23:39:51 +08:00
楼主,互联网的精神就是分享
|
46
HYSS 2017-09-23 23:40:31 +08:00
我教你一招
1.用蹩脚的拼音做函数名 2.各种回调处理 3.开辟多个无用的变量 4.别用变量存储 selector,操作一次 find 一次 5.操作 dom 时用[用来渲染的 css]来作为选择器 如果满足以上条件 放心 正常人肯定不会用你的代码的 |
47
t1518968889 2017-09-23 23:48:06 +08:00 via Android
如果你单纯问防复制泄露加密,大家还没什么好说好反 x 的,一开头来一句写了很久,其实,你放心好了,几乎没人看你写的代码,更别说复制,你以为虚拟机+混淆很厉害了?那这样还要不要逆向工程师了,加密再屌也没用,网页的事,直接反代镜像到你没脾气!
不知道你写的什么,这点不好说~ |
48
otakustay 2017-09-23 23:49:35 +08:00
开源,开放协议,宣传出去,做大,让所有人都知道这个功能出自你手,然后随便别人怎么抄他都是你的了
|
49
t1518968889 2017-09-23 23:49:38 +08:00 via Android 1
|
50
halczy 2017-09-24 00:10:16 +08:00
|
51
zthxxx 2017-09-24 01:06:36 +08:00
|
52
cszchen 2017-09-24 02:20:16 +08:00
我写了 n 多个功能性的模块放在 github 上,盼星星盼月亮希望更多的人用,结果也才几十个 star,楼主你想多了。
话说我也觉得有这种想法的估计也写不出太有价值的代码 |
53
railgun 2017-09-24 02:53:32 +08:00
简单,你说说你的代码是干什么的,我们写个比你好用的开源出来就没人抄你的了
|
54
msg7086 2017-09-24 04:43:33 +08:00 7
这站还能不能好好回帖了。楼主问个问题下面一片嘲讽的,都是共产主义接班人么。
|
55
Macuilxochitl 2017-09-24 04:58:45 +08:00 1
让别人用你代码的时候比自己实现一个还麻烦就行了。
|
56
loading 2017-09-24 07:10:24 +08:00 via Android
加几个魔数变量进去(其实是一首歌)……把 js 包变成 10m。
|
57
jatesun 2017-09-24 07:48:38 +08:00 via iPhone
你以为别人看的上你的代码???
|
58
fox0001 2017-09-24 08:07:45 +08:00
js 的话,就别多想了,要用总是有办法。要不改为后台实现
|
59
silencefent 2017-09-24 08:40:57 +08:00
js 加盐加密,用 php 去读,解密输出
|
60
rashawn 2017-09-24 09:03:10 +08:00 via iPhone
下次写的时候别花很久就好了
|
61
weilongs 2017-09-24 09:34:12 +08:00
写 low 点就好了
|
62
wangxiaoer 2017-09-24 09:45:25 +08:00 via Android 1
一个个嘲讽的真是够了,你们真是活在自己的世界里。
举个最简单的例子假入楼主把淘宝的 Ua 之类破解了,然后基于这个做了一个网页应用,又由于某些原因不方便放到后台,这样楼主辛苦的工作别人不费吹灰之力就拿去重用了。 然后楼上的各位请你们分分钟去找一个开源的出来? 我只是举个例子,不要较真。 回答楼主的问题,用 ts 等写,转换后再混淆,增加一些逆向的难度吧。 |
64
levon 2017-09-24 10:05:40 +08:00 via Android
典型想多了
|
66
oonnnoo 2017-09-24 10:50:52 +08:00
删掉对应的代码~
|
67
netChen 2017-09-24 11:11:52 +08:00
这个问题很复杂,不知道该怎么说,毕竟前端重复的轮子已经很多了。如果真的想加密,为什么不直接用后端语言写,前台只接收数据呢?有些语言的天性就是效率与分享。
|
68
loongwang 2017-09-24 11:51:17 +08:00
加点验证参数吧
|
69
fisher335 2017-09-24 11:52:03 +08:00 via iPhone
在服务器端放一个 tokentoken,用来加密
|
70
tvallday 2017-09-24 11:54:25 +08:00
如果真的很重要肯定放在后端啊,通过二进制传输数据,前端只负责输出。别人除非破解你服务器不然根本不知道你在干什么。
|
71
dangyuluo 2017-09-24 12:22:45 +08:00
我觉得只能尽量把代码写的恶心一点了,效果还不一定好。
楼上好多人支持开源加协议,或者支持开源后分享给别人使用,但这真不是楼主的问题。而且,商业社会和开源社区差别还是蛮大的,并不是说所有东西开源都好。Windows 为嘛不开源呢? iOS 为嘛不开源呢? 因为开源后活不下去啊! |
72
goodspb 2017-09-24 12:38:38 +08:00
变量全部都是 1 个字母
函数都是 1 个字母+1 个数字 包 100 层 function() { } O(n) 写成 O(n*n*n) |
73
gouflv 2017-09-24 12:58:04 +08:00
想知道你这段代码有多少价值
|
74
sofs 2017-09-24 17:02:32 +08:00
改变心态吧,开源,你会有收获的。
|
75
oswuhan 2017-09-24 17:53:33 +08:00
不写文档已经足矣!
|
76
oswuhan 2017-09-24 17:58:07 +08:00
现如今能自己写 js 的真前端还有几个,早些年还英才辈出,现如今整个圈子都被假前端弄的乌烟瘴气,凡事依赖 npm,npm 解决不了的问题就石沉大海,稍微有点觉悟的跑去 stackoverflow 逛一圈,然后依然没有然后……
|
77
oswuhan 2017-09-24 17:59:19 +08:00
“现如今能自己写 js 的真前端还有几个”,不是说真前端只有个位数的存在,想表达的意思是这方面的问题缺乏广泛的关注
|
78
Technetiumer 2017-09-24 20:13:58 +08:00 via Android
首先,人家不一定会盗用你的代码
方案一,你可以以 AGPL 开源,这样别人用你的代码也得以 AGPL 开源 方案二,随变混淆一下,一般人就懒得看了 这个比楼上的那些混淆牛逼多了 http://utf-8.jp/public/aaencode.html |
80
444683462 2017-09-24 22:36:58 +08:00
哈哈 虽然他们都在叫你开源
他们自己写的东西难道自己不珍惜吗 楼主只是希望能尽量保护自己的劳动价值 js 在前端不好保护,尽量把功能往后端移,后端好加密 |
81
natforum 2017-09-25 03:14:56 +08:00 via Android
楼上回复那些,人家已经拿去用了,只能开源加协议,然后通过法律途径维权
|
82
yongSir 2017-09-25 08:11:29 +08:00
多重混淆,验证混淆是目前最方便的方法了
虽然还是瞒不过有心人 但他肯花这功夫 估计能重写好几遍类似的功能函数了 🤷♀️ |
83
zhishidahao 2017-09-25 08:38:11 +08:00
开源协议中国法律不是不支持吗?防君子不防小人。不过开源多几个 star 也挺好
|
84
justtery 2017-09-25 08:50:17 +08:00 via Android
一楼真相了
|
85
flamhaze5946 2017-09-25 10:17:41 +08:00
谁说楼主要开源了?
那单机大作加密那么厉害岂不是要被你们喷死? |
86
xwhxbg 2017-09-25 10:36:22 +08:00
webAssembly
jsfuck |
87
sucaihuo 2017-09-25 10:48:48 +08:00
开源分享呗,网页素材还可以传到我网站上赚点零花钱
欢迎大家发布素材 http://www.sucaihuo.com/ |
88
bertonzh 2017-09-25 11:09:54 +08:00
把业务代码和功能函数揉在一起呗。不知道楼主的代码具体功能是什么?纯算法逻辑?还是带 DOM 操作?
|
89
sampeng 2017-09-25 11:11:57 +08:00
然后发现开了 github 后,连个 start 都没有的 “业务”代码
|
90
sampeng 2017-09-25 11:12:00 +08:00
然后发现开了 github 后,连个 star 都没有的 “业务”代码
|
91
alwayshere OP @workwonder 贵公司能不能把代码全部开源出来? github 我第一个 star
|
92
zhuangzhuang1988 2017-09-25 14:45:28 +08:00
多用用 yield async 然后编译到 es5。 自动混肴。
|
93
lamada 2017-09-25 15:01:54 +08:00
拆模块,动态 import
|
94
anke 2017-09-25 15:16:12 +08:00
jscrambler 你值得拥有
|
95
gclove 2017-09-25 15:21:10 +08:00
@alwayshere 只能依靠申请专利, "要做到防窃取是不可能的" 这句话说的没错
其实你要这样理解 1. 如果是运算相关的"功能", 你大可放到 服务器中执行 2. HTML, 本来就是开放性的, 正是这种语言才使不同浏览器都能够渲染出精彩的页面 3. 没有人真的会直接复制粘贴你的代码, 一般对于前端页面来说, 不看你的代码, 就看你的产品, 就能大概理解相应的逻辑 4. 真的要保护运算 /计算相关的逻辑, 请放置到服务器运算 5. 界面设计和特效从技术上说无法保护的, 根本不用看代码, 就能实现. 只有依赖专利 6. 不要想着竞争对手不去实现这样的功能。 你既然做出来, 肯定会有人模仿, 就像是锤子系统的大爆炸功能. 而应该靠别的方面 知名度 / 品牌 / 服务 / 氛围 |
96
chinawrj 2017-09-25 15:23:07 +08:00
把代码写的垃圾到自己都不想维护和看就 OK 了。
|
97
chenyu0532 2017-09-25 15:24:26 +08:00
把它写到让一个新人看到说:卧槽,写的跟屎一样。这就行了。。
|
98
LMkillme 2017-09-25 16:00:08 +08:00
不知道各位是怎么看待「逼捐」现象?
|
99
dcsite 2017-09-25 16:37:30 +08:00
给楼主一个建议,重要算法和逻辑放在后端,JS+后端交叉运行。
PS:这贴的很多回复简直了,好像进入了幼儿园。开不开源关你们何事?假如上级要求业务逻辑加密,你非在这扯开源,脑残?商业公司哪个开源了自己的核心技术? 开源是好事,选择开源的都值得尊敬。但我觉得,不开源的道德也不会比你们低。 |
100
workwonder 2017-09-25 19:28:44 +08:00 via Android
@alwayshere 全部开源做不到,但你这样掩藏前端代码太刻意了,不值得花那个时间。
|