NodeJS实现客户端js加密


Posted in NodeJs onJanuary 09, 2017

思路:

  • 服务端渲染业务代码js =>
  • 前后端约定加密算法 =>
  • 业务代码进行签名 =>
  • 客户端解密业务代码 =>
  • eval 执行

Node 路由示例:

/**
 * 请自定义 restful API 这里以 GET 为例
 * @param {req}
 * @param {res}
 * @return {next()}
 */
//var util = require('utility');
exports.encryption = function(req, res){
 //GET
 var name = req.query.name
 , jsStr // 用于 服务端渲染的 js 脚本
 , doc = {
 n : '支持请求参数',
 };
 // isSafe : 常规安全字符判断
 if (fun.isSafe(name)) doc['n'] = name;
 /////////////////需要加密的js 业务代码 start///////////////////// 
 jsStr = function(n){
 alert('开始执行业务代码~')
 // 变量 N 可以是某些 之前需要 服务端渲染的 信息
 // 比如 自产 的 url 之类
 function sayHello(s){
 alert('您输入了: '+s);
 }
 sayHello(n);
 //
 }
 //////////////////需要加密的js 业务代码 end//////////////////// 
 jsStr = '('+jsStr.toString()+')("'+( name ? doc.n : '默认的')+'")';
 var key = util.md5('highsea90'+Date.now())
 var resStr = myFromCharCode(key, jsStr);
 res.render('cm/eval',{
 title : 'js 加密 demo',
 charCode : escape(myFromCharCode.toString()),
 data : escape(resStr),
 key : key
 })
};
 /**
 * @param {m}密钥
 * @param {text}文本
 * @return {last}加密文本
 */
 function myFromCharCode (m, text){
 var last = '';
 for (var i = 0 , l = text.length; i < l; i++) {
 for (var j = 0, k = m.length; j < k; j++) {
 var key = m.charCodeAt(j)
 , text2 = text.charCodeAt(i) ^ key
 }
 last += String.fromCharCode(text2);
 }
 return last;
 }

客户端 页面示例:

<!DOCTYPE html>
<html>
<head>
 <title><%=title%></title>
</head>
<body>
<script type="text/javascript">
 // 执行 约定的 加密算法
 eval(unescape("<%=charCode%>"));
 // 服务端加密后的 字符串 用约定的 算法进行解密
 var str = myFromCharCode("<%=key%>", unescape("<%=data%>"));
 // 执行业务代码
 eval(str);
</script>
</body>
</html>

代码演示

一个小录像:

NodeJS实现客户端js加密

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

NodeJs 相关文章推荐
Nodejs学习笔记之NET模块
Jan 13 NodeJs
nodejs微信公众号支付开发
Sep 19 NodeJs
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
Jan 12 NodeJs
nodejs连接mysql数据库简单封装示例-mysql模块
Apr 10 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
nodejs实现连接mongodb数据库的方法示例
Mar 15 NodeJs
nodejs+mongodb aggregate级联查询操作示例
Mar 17 NodeJs
nodejs读取本地中文json文件出现乱码解决方法
Oct 10 NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 NodeJs
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
Dec 14 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 #NodeJs
详解NodeJs支付宝移动支付签名及验签
Jan 06 #NodeJs
nodejs和php实现图片访问实时处理
Jan 05 #NodeJs
nodejs实例解析(输出hello world)
Jan 03 #NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
Jan 01 #NodeJs
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
Dec 30 #NodeJs
浅谈Nodejs中的作用域问题
Dec 26 #NodeJs
You might like
解析php多线程下载远程多个文件
2013/06/25 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
JS 事件绑定函数代码
2010/04/28 Javascript
jquery 插件开发 extjs中的extend用法小结
2013/01/04 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
javaScript中&quot;==&quot;和&quot;===&quot;的区别详解
2018/03/16 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
对python中的pop函数和append函数详解
2018/05/04 Python
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
BannerBuzz加拿大:在线定制横幅印刷、广告和标志
2020/03/10 全球购物
如何进行Linux分区优化
2013/02/12 面试题
网络教育自我鉴定
2013/11/01 职场文书
活动总结书
2014/05/08 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
解约证明模板
2015/06/19 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js