2021-07-20 JavaScript中关于eval()方法
eval()常见用途
1.使用ajax获取到后台返回的json数据时,使用 eval 这个方法将json字符串转换成对象数组
let jsonString = JSON.stringify({fang:'方'})
const jsonObject = eval('('+jsonString+')')
console.log('jsonObject--->',jsonObject)
替代eval()方法
替代的方法都是不是绝对安全。特别在node里使用的,更不安全。
要确保传的代码字符串不会牵扯到一系列的安全问题。最好在使用eval()或者是自己定义的evil()之前,先过滤一遍,确保不用引入用户输入的恶意代码。
1、新建一个script标签
function evil(str) {
const script = document.createElement('script');
script.type="text/javascript";
script.text=str;
document.getElementsByTagName('head')[0].appendChild(script);
document.head.removeChild(document.head.lastChild);
}
由于用到了document这个浏览器对象,所以在node等环境里,可能会用不了。不过可以使用let,var,const等来声明局部变量,也可以直接声明或修改全局变量。
2、new 一个function函数
function evil(fn) {
const Fn = Function;//一个变量指向Function,防止有些前端编译工具报错
return new Fn('return ' + fn)();
}
这种方法比上面那种方法要来的方便,且在node里也可使用。不过不可以使用let,var,const等来声明局部变量。但可以直接声明或修改全局变量。
参考
2021-07-20 JavaScript中关于eval()方法的更多相关文章
- JavaScript中使用eval()方法解析json串
最近在js用到了eval()方法,在这里做个笔记 当时是这么用的:data = eval("("+data+")"); data为后台向前台传送的一个json串 ...
- javascript中 关于eval的那些事
javascript中的eval是一个非常灵活,但是灵活是伴随着风险的. 一.下面我们来看看那使用eval声明变量的问题. function test(x){ eval("var a=x;& ...
- javascript中的splice方法介绍&示例
javascript 中的 splice 方法很强大,它可以用于插入.删除或替换数组的元素. 下面来一一介绍! 删除:用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数 ...
- javascript中的toString()方法
javascript中的toString()方法,主要用于Array.Boolean.Date.Error.Function.Number等对象.下面是这些方法的一些解析和简单应用,做个纪律,以作备忘 ...
- JavaScript中的工厂方法、构造函数与class
JavaScript中的工厂方法.构造函数与class 本文转载自:众成翻译 译者:谢于中 链接:http://www.zcfy.cc/article/1129 原文:https://medium.c ...
- 2021.07.20 P3951 小凯的疑惑(最大公因数,未证)
2021.07.20 P3951 小凯的疑惑(最大公因数,未证) 重点: 1.最大公因数 题意: 求ax+by最大的表示不了的数(a,b给定 x,y非负). 分析: 不会.--2021.07.20 代 ...
- 2021.07.20 CF1477A Nezzar and Board(最大公因数,未证)
2021.07.20 CF1477A Nezzar and Board(最大公因数,未证) CF1477A Nezzar and Board - 洛谷 | 计算机科学教育新生态 (luogu.com. ...
- Java和JavaScript中使用Json方法大全
林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka 摘要:JSON(JavaScript Object Notation) 是一种轻量级的数 ...
- Javascript中的Callback方法浅析
什么是callback? 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数 ...
- Json学习总结(1)——Java和JavaScript中使用Json方法大全
摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语 ...
随机推荐
- [转帖]聊聊我对 GraphQL 的一些认知
https://www.modb.pro/db/139451 作者简介:haohongfan 是 Apache Dubbogo Committer,目前就职于京东,擅长高并发架构设计.公众号 HHFC ...
- [转帖]Python连接Oracle数据库进行数据处理操作
https://www.dgrt.cn/a/2259443.html?action=onClick 解决以下问题: Python连接Oracle数据库,并查询.提取Oracle数据库中数据? 通过Py ...
- [转帖]gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化
相关博客http://blog.chinaunix.net/uid-24954950-id-2956476.html 相关博客http://blog.csdn.net/misiter/article/ ...
- [转帖]JVM NativeMemoryTracking ;jcmd process_id VM.native_memory;Native memory tracking is not enabled
目录 一.Native Memory Tracking (NMT) 是Hotspot VM用来分析VM内部内存使用情况的一个功能.我们可以利用jcmd(jdk自带)这个工具来访问NMT的数据. 1.N ...
- 分享一个项目:`learning_go_plan9_assembly`, 学习 golang plan9 汇编
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 近期在学习 golang plan9 汇编,总算基本做到了 ...
- 基于密码学的身份混淆系统 -- idmix
简介 Hyperledger Fabric的Idemix是一个基于密码学的身份混淆系统,它提供了一种在区块链网络中实现用户隐私的方法.Idemix的主要特性是它的零知识证明系统,这是一种允许用户证明他 ...
- 中文LLaMA模型和指令精调的Alpaca大模型:中文数据进行二次预训练
中文LLaMA模型和指令精调的Alpaca大模型:中文数据进行二次预训练,进一步提升了中文基础语义理解能力 以ChatGPT.GPT-4等为代表的大语言模型(Large Language Model, ...
- Python xlwt数据保存到 Excel中以及xlrd读取excel文件画图
1.方法一:xlwt 1.1 安装包 pip install xlwt 1.2 保存数据到 Excel import xlwt import numpy as np import random # 新 ...
- 7.3 Windows驱动开发:内核监视LoadImage映像回调
在笔者上一篇文章<内核注册并监控对象回调>介绍了如何运用ObRegisterCallbacks注册进程与线程回调,并通过该回调实现了拦截指定进行运行的效果,本章LyShark将带大家继续探 ...
- nginx+uwsgi环境部署
WSGI django自带的wsgiref 在调试模式下使用的wsgi的文件,网关接口,协议 uwsgi:协议 uWSGI:具体实现方式 安装 ``` pip3 install uwsgi -i ht ...