网站首页 > 技术文章 正文
js加密,是前端很常见的需求。
常见的方法是用jshaman、jsjiami.online等进行js代码混淆加密。
是否有其它的方案呢?比如:我们能否自己开发一种前端浏览器语言,取代js(将js代码,转化为自己独特的语言,从而让他人看不懂),以此实现变相的js代码加密。
以此思路,下面进行尝试和研究。
有一个符合这个想法的脚本,名为livescript,也可以在前端执行。
它的代码形式如下:
执行输出:
这个小众的语言,语法与js是有不小差异的。如果大量的这种代码出现在前端,替代js,实现各种功能,貌似是具备了加密的效果。
例如,这陌生的语法,js程序员看着肯定是一脸懵:
而且,还有方法可以实现javascript与livescript语法转换:
目前为止,似乎是OK的:将js转化为livescript,然后再发布。
那么livescript这种语法在浏览器中是怎么被执行的呢?
经简单分析得知,livescript在浏览器中执行前,会进行编译:
其中的output变量看起来有些可疑,在此加一句console.log,输出,看看它是什么:
执行:
果然如此,livescript编译是把它自定义的语法转化成了js代码(livescript代码被还原为了js代码)。
这就解释的通了,理论也就正确了:js当然是可以被浏览器执行的。
livescript脚本最终会被转化成js代码。所以,它与aaencode、jjencode、jsf∪ck等类似,可以视作一种编码。
由于能被轻易还原为js代码,所以,并不具备很强的加密效果。如果想加密js代码
,防止代码被分析、复制、盗用,还是远远不及js混淆加密工具的(jshaman、jsjiami.online等正统js混淆加密工具)。
或者有人会说,如果livescript代码它没有还原为js,而是直接执行,可能吗?
可能性比较小,这里可以联想到wasm(WebAssembly,非指汇编语言
)。如果想让代码直接被执行,而不是转成js代码,就需要有一个“执行器”,浏览器是只给js准备了执行器,livescript想直接执行,就得像wasm一样也开发自己的执行器,这是个巨的大工程了,还得兼容所有js语法、还得长期随js更新而更新(因为此处的场景要转js为livescript,这是本文讨论的应用点),综合考虑到这些,这个方案不太可行:自创一种前端语言,替代js,以实现代码加密不可行。无论是转为js执行,还是自己写执行器,都不可行。
- 上一篇: 工业4.0的发展离不开数据可视化的技术支撑
- 下一篇: 一分钟学前端-00_前端认识
猜你喜欢
- 2024-11-25 前端获得浏览器语言,如果是英文,则进行页面跳转
- 2024-11-25 前端需要学哪些东西
- 2024-11-25 web前端是什么,在哪些地方有应用,html和html5区别都在这里了
- 2024-11-25 前端学习路线
- 2024-11-25 Web前端发展趋势综述
- 2024-11-25 一分钟学前端-00_前端认识
你 发表评论:
欢迎- 599℃几个Oracle空值处理函数 oracle处理null值的函数
- 591℃Oracle分析函数之Lag和Lead()使用
- 579℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 575℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 571℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 564℃【数据统计分析】详解Oracle分组函数之CUBE
- 550℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 545℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- 前端接口 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)