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写的一个简单项目打包工具
May 11 NodeJs
nodejs之请求路由概述
Jul 05 NodeJs
Nodejs Post请求报socket hang up错误的解决办法
Sep 25 NodeJs
Nodejs抓取html页面内容(推荐)
Aug 11 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 NodeJs
nodejs socket实现的服务端和客户端功能示例
Jun 02 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
nodejs中sleep功能实现暂停几秒的方法
Jul 12 NodeJs
NodeJS实现不可逆加密与密码密文保存的方法
Mar 16 NodeJs
nodejs中实现修改用户路由功能
May 24 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
来自phpguru得Php Cache类源码
2010/04/15 PHP
PHP 一个随机字符串生成代码
2010/05/26 PHP
php标签云的实现代码
2012/10/10 PHP
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
js控制分页打印、打印分页示例
2014/02/08 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
npm qs模块使用详解
2020/02/07 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
Python中的面向对象编程详解(下)
2015/04/13 Python
Python语言实现将图片转化为html页面
2017/12/06 Python
python定向爬取淘宝商品价格
2018/02/27 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
python如何写出表白程序
2020/06/01 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
经典禁毒标语
2014/06/16 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
Java8中接口的新特性使用指南
2021/11/01 Java/Android