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