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英寸大直屏和旗舰级影像

