标签: eval

将 eval() 转换为 JSON.parse

我正在经历使用 eval() 对于基于 XSS 的攻击的不良影响。我需要保护一段代码免受可能的 XSS 攻击,我猜 JSON.parse() 应该可以正常工作。

var request = new XMLHttpRequest(); 
var url = encDataPath + "/jcr:content/metadata.json?_charset_=utf-8";
url = Granite.HTTP.externalize(url);
request.open("GET", url ,false);
request.send(null);

var jsonData =eval("(" + request.responseText + ")"); // <-- here
var assetTitle = jsonData["dc:title"];
var mimetype = jsonData["dc:format"];
Run Code Online (Sandbox Code Playgroud)

有人可以建议我如何将eval()(jsonData)更改为JSON.parse?

javascript xss json eval code-injection

0
推荐指数
1
解决办法
1464
查看次数

bash 变量作为命令:在执行前回显命令并将结果保存到变量中

我正在执行一系列命令curl

  1. 我需要在执行之前回显该命令。
  2. 执行命令并将结果保存到 bash 变量中。
  3. 从执行结果中获取值并使用该值执行下一个curl。

它是这样的:

#  -----> step 1 <-----
URL="https://web.example.com:8444/hello.html"
CMD="curl \
        --insecure \
        --dump-header - \
        \"$URL\""

echo $CMD && eval $CMD
OUT="<result of the curl command???>"

# Set-Cookie: JSESSIONID=5D5B29689EFE6987B6B17630E1F228AD; Path=/; Secure; HttpOnly
JSESSIONID=$(echo $OUT | grep JSESSIONID | awk '{ s = ""; for (i = 2; i <= NF; i++) s = s $i " "; print s }' | xargs)

# Location: https://web.example.com:8444/oauth2/authorization/openam
URL=$(echo $OUT | grep Location | awk '{print …
Run Code Online (Sandbox Code Playgroud)

variables bash curl eval

0
推荐指数
1
解决办法
1331
查看次数

为什么使用 eval echo 会覆盖 bash 脚本中的环境变量?

我正在编写一个基于 CircleCI orb 源代码的 bash 脚本,我很困惑为什么 bash 脚本中的环境变量子集会被设置为eval echo它们自己。

例如,这条线的目的是什么?

ORB_EVAL_REPO=$(eval echo "${ORB_EVAL_REPO}")
Run Code Online (Sandbox Code Playgroud)

这是源代码:

https://circleci.com/developer/orbs/orb/circleci/aws-ecr#orb-source

作为一个完整的示例,第 705-709 行设置了五个环境变量,但eval echo在第 691-692 行仅使用其中两个变量进行设置,即使这些变量在第 699-702 行以相同的方式使用:

command: |
    #!/bin/bash
    ORB_EVAL_REGION=$(eval echo "${ORB_EVAL_REGION}") # line 691
    ORB_EVAL_REPO=$(eval echo "${ORB_EVAL_REPO}")

    if [ "$ORB_VAL_PUBLIC_REGISTRY" == "1" ]; then
        echo "set-repository-policy is not supported on public repos"
        exit 1
    else
        aws ecr set-repository-policy \
            --profile "${ORB_VAL_PROFILE_NAME}" \ # line 699
            --region "${ORB_EVAL_REGION}" \
            --repository-name "${ORB_EVAL_REPO}" \
            --policy-text "file://${ORB_VAL_REPO_POLICY_PATH}"
    fi
environment:
    ORB_EVAL_REGION: <<parameters.region>> # …
Run Code Online (Sandbox Code Playgroud)

bash eval circleci

0
推荐指数
1
解决办法
148
查看次数

使用 Eval 将变量设置为等于多行字符串

我正在尝试使用 eval 设置多行变量

$ k="A
B
C"

$ echo "$k"
A
B
C

$ eval 'k="1
2
3"'

$ echo "$k"
1
2
3
Run Code Online (Sandbox Code Playgroud)

但我想使用 awk 通过 awk 脚本生成我的变量

$ echo "$k" | awk 'BEGIN{RS="";FS="[ \t]+"}{print "awkV=\""$0"\""}' 
awkV="1
2
3"

$ eval `echo "$k" | awk 'BEGIN{RS="";FS="[ \t]+"}{print "awkV=\""$0"\""}'`
$ echo "$awkV"
1 2 3

$ eval '`echo "$k" | awk 'BEGIN{RS="";FS="[ \t]+"}{print "awkV=\""$0"\""}'`'
-bash: unexpected EOF while looking for matching ``'
-bash: syntax error: unexpected end of file
bash: …
Run Code Online (Sandbox Code Playgroud)

bash awk eval

0
推荐指数
1
解决办法
59
查看次数

我的Perl程序可以执行存储在数据库中的代码吗?

是否可以在数据库中保存一些Perl代码然后使用select语句检索它然后执行该Perl代码?我尝试过使用eval,但这似乎不起作用.

这是我现在正在尝试的东西,它似乎不起作用:

my $temp = $qryResults[0];
print $temp."\n";
eval{"$temp"};
Run Code Online (Sandbox Code Playgroud)

输出是 $con->Disconnect();exit;

mysql perl eval

-1
推荐指数
1
解决办法
464
查看次数

php eval()返回

<?php
  $a = "a == a";
  eval($a);
Run Code Online (Sandbox Code Playgroud)

这返回false.我以为它应该回归真实.任何想法/想法为什么会这样.

php eval

-1
推荐指数
1
解决办法
748
查看次数

R内部的呼叫和评估功能

我正在编写一个函数,我想提供一个变量,其中包含要在函数内部进行求值的条件.例如,我有一个小时变量,包含0,3,6,9,18,3,6,9,18,0,18等值...我想选择小时变量匹配为0,6的索引这个0,6可能会根据其他一些参数而改变.基本上它们并不总是固定的.所以我传递一个变量g1 = call("which", (hourval==0 | hourval == 6)).我希望在程序中评估此语句.因此我使用该声明x1 = eval(g1).显然,当我传递变量时g1,不会生成那个时间的小时变量,而是在eval(g1)语句之前生成它.我收到错误,hourval找不到对象.有没有其他方法可以解决这个问题.

在此先感谢,任何帮助表示赞赏.

Narayani Barve

eval r call

-1
推荐指数
1
解决办法
1032
查看次数

使用正则表达式解释perl中的权限

我试图读取两个由a分隔的数字:并进行比较.

下面是一些说明我的问题的代码:

use strict;
use warnings;

my @nums = qw(1.23:2.13 0.1:2.11 1.17772e+06:1.32 2:10.2);

for my $number (@nums){
    print "actual numbers $number\n";
    my ($c, $e) = ($1, $2) if $number =~ /(\d+\.\d+|\d+):(\d+\.\d+|\d+)/;
    print  "regex matches: $c:$e\n";
}
Run Code Online (Sandbox Code Playgroud)

哪个输出:

actual numbers 1.23:2.13
regex matches: 1.23:2.13
actual numbers 0.1:2.11
regex matches: 0.1:2.11
actual numbers 1.17772e+06:1.32
regex matches: 06:1.32 # not capturing 1.17772e+06
actual numbers 2:10.2
regex matches: 2:10.2
Run Code Online (Sandbox Code Playgroud)

我的问题是:我怎样才能a)捕获1.17772e+06并b)将其评估为数字?

regex math perl eval

-1
推荐指数
1
解决办法
140
查看次数

使用eval()检查是否设置了常量

我试图基于传递变量的单个部分来检查已定义的变量.(变量的其余部分是静态的,并且它的所有其他部分都是相同的),所以我做了一个测试,以确定这是否可行.

它不起作用,但也许我正在做一些容易修复的小事.

define('TEST', 'works');
$test = 't';

echo TES . strtoupper($test);
echo eval('TES . strtoupper('.$test.');');
echo eval('TES . strtoupper(\'$test\');');

echo eval('TES' . strtoupper($test) . ';');
Run Code Online (Sandbox Code Playgroud)

php eval constants

-1
推荐指数
1
解决办法
662
查看次数

将eval()转换为JSON.parse()时出错

我有一个带有eval()的代码段,如下所示:

var data = "{listUpdated:[],listConflictOrMerge:[]}"; //returned from Ajax

var results = eval("(" + data + ")");

console.log(results)
Run Code Online (Sandbox Code Playgroud)

如您所见,数据是我从ajax请求返回的输入值.使用eval()时,可以将其解析为2个数组对象.

现在我不想再使用eval()了,所以我尝试使用JSON.parse().但是,有一个错误.

var data = "{listUpdated:[],listConflictOrMerge:[]}"; //returned from Ajax

var results = JSON.parse(data);

console.log(results)
Run Code Online (Sandbox Code Playgroud)

我的目的是我不想再使用eval()来解析数据.

  • 那么,有什么办法可以做到吗?

  • 我尝试使用JSON,但我很不走运.我错了吗?

javascript ajax parsing json eval

-1
推荐指数
1
解决办法
44
查看次数

标签 统计

eval ×10

bash ×3

javascript ×2

json ×2

perl ×2

php ×2

ajax ×1

awk ×1

call ×1

circleci ×1

code-injection ×1

constants ×1

curl ×1

math ×1

mysql ×1

parsing ×1

r ×1

regex ×1

variables ×1

xss ×1