NodeJS实现客户端js加密

发布时间 - 2026-01-10 22:24:08    点击率:

思路:

  • 服务端渲染业务代码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  # 加密  # 获取本机IP地址的实例(JavaScript / Node.js)  # nodejs获取本机内网和外网ip地址的实现代码  # 详解node HTTP请求客户端 - Request  # nodejs socket服务端和客户端简单通信功能  # Node.js中的http请求客户端示例(request client)  # 使用node.js 获取客户端信息代码分享  # nodejs socket实现的服务端和客户端功能示例  # nodejs(officegen)+vue(axios)在客户端导出word文档的方法  # nodejs简单实现TCP服务器端和客户端的聊天功能示例  # node.js中express模块创建服务器和http模块客户端发请求  # 解决Node.js mysql客户端不支持认证协议引发的问题  # node获取客户端ip功能简单示例  # 服务端  # 客户端  # 自定义  # 为例  # 后端  # encryption  # exports  # function  # require  # util  # var  # utility  # alert  # start  # sayHello  # url  # fun  # jsStr  # query  # isSafe 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在Ubuntu系统下快速搭建WordPress个人网站?  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  如何在云主机上快速搭建网站?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  Python自动化办公教程_ExcelWordPDF批量处理案例  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  javascript基于原型链的继承及call和apply函数用法分析  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel如何使用Gate和Policy进行授权?(权限控制)  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  JavaScript中的标签模板是什么_它如何扩展字符串功能  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  如何用JavaScript实现文本编辑器_光标和选区怎么处理  创业网站制作流程,创业网站可靠吗?  如何用PHP快速搭建高效网站?分步指南  如何在IIS中新建站点并配置端口与IP地址?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  如何快速搭建FTP站点实现文件共享?  javascript日期怎么处理_如何格式化输出  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  个人摄影网站制作流程,摄影爱好者都去什么网站?  网站建设要注意的标准 促进网站用户好感度!  详解vue.js组件化开发实践  如何用VPS主机快速搭建个人网站?  如何正确下载安装西数主机建站助手?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  原生JS获取元素集合的子元素宽度实例  lovemo网页版地址 lovemo官网手机登录  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Angular 表单中正确绑定输入值以确保提交与验证正常工作  北京的网站制作公司有哪些,哪个视频网站最好?  Laravel如何处理文件下载请求?(Response示例)  如何快速打造个性化非模板自助建站?  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像