JS eval()函数只解释变量
JS eval() function to interpret variables only
我使用eval来解释一些变量输入。
可能的输入
"somevar"
"someobj.someprop['somekey'].someprop"
"window.someprop"
等。
但是我不希望它'执行'任何动作。比如调用任何函数,改变任何值,声明任何变量。
所以这些不应该被接受(以及任何改变任何事物状态的):
alert()
var somewar = 0
mywar = somewar
是否可以通过本机js?
我的目标只是解释复杂的输入变量"address"并返回它
对于这样的内容,您最好解析该值。
var steps = input.match(/'['(?:[^']|''.)+'']|'["(?:[^"]|''.)+"']|[a-zA-Z0-9_]+/g);
var src = window;
var step;
while(step = steps.shift()) {
if( step.charAt(0)) {
// ['...'] or ["..."]
step = step.substring(2,step.length-2);
}
src = src[step];
}
alert(src);
由于您正在解析字符串,因此没有机会执行恶意代码。
相关文章:
- 有人可以解释一下这个变量的声明方式
- Javascript i(index,iterator):如果用作变量,它将始终被解释为索引位置
- 解释变量如何“泄漏”
- 需要将 JSON 解释为变量
- 你能解释一下这个JavaScript语法(变量外推)吗?
- 语法:const {} = 变量名称,任何人都可以解释或指出我正确的方向
- 使用解释的变量名称循环遍历窗体上的单选按钮
- JSON语法-变量被解释为文字
- JS将作用域分离,以对具有相同名称的多个变量进行解释
- 将javascript连接字符串解释为变量
- Javascript-需要对IIFE中的变量进行解释
- 将 javascript 变量的动态值解释为文本框 id
- DataBinder.Eval返回的值被解释为变量而不是字符串
- 解释JavaScript中的变量作用域
- 将html附加为变量不会解释标记
- 如何在下划线模板中将javascript变量解释为属性
- Laravel 4.2试图解释Backbone.js模板变量
- 解释Javascript文件Laravel中的变量
- 谁能解释给我这个JavaScript代码定义一些变量和循环通过他们
- JS eval()函数只解释变量