首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将双引号参数传递给php shell。

无法将双引号参数传递给php shell。
EN

Stack Overflow用户
提问于 2018-08-05 07:04:11
回答 1查看 139关注 0票数 0

我有一个长字符串,它由命令行参数组成。这些论点都是用双引号包装的。当我将命令传递给exec时,什么都不会发生。在传入escapeshellarg()之前,我尝试在exec中传递字符串,但没有效果。

字符串如下:

代码语言:javascript
复制
/usr/bin/python3 /home/johndoe/src/crm_api.py "jack" "london" "jack@yahoo.com" "09061414145" "No. 1, George St. Ave., CA, USA" "California" "CA" "2222222222" "United States" "$2y$10$U81IfXi7r7hx4xggYTpcJesRblqTKrGAbgM388/v0pH.qtOfLVLfi"

使用该字符串的代码如下:

代码语言:javascript
复制
    $command = "/usr/bin/python3 /home/johndoe/src/crm_api.py " .
            $crm_first_name . " " .
            $crm_last_name . " " . $crm_email . " " . $crm_phone . " " .
            $crm_address . " " . $crm_city . " " . $crm_state . " " .
            $crm_zip . " " . $crm_country . " " . $crm_password;

    echo '<script>console.log(\'' . $command . '\');</script>';


    echo $command;
    echo '<script> alert(\'' . $command . '\');</script>';
    $cResult = exec($command);
    echo '<script>console.log(' . $cResult . ');</script>';
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-05 07:16:17

是的,逃避责任()是用来转义shell参数的工具。例如:

代码语言:javascript
复制
$script = '/usr/bin/python3 /home/johndoe/src/crm_api.py';
$args = [
    $crm_first_name,
    $crm_last_name,
    $crm_email,
    $crm_phone,
    $crm_address,
    $crm_city,
    $crm_state,
    $crm_zip,
    $crm_country,
    $crm_password,
];
$command = $script . ' ' . implode(' ', array_map('escapeshellarg', $args));

(您也可以将它应用于脚本路径本身,但是这里没有必要,因为它是硬编码的。)

演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51692155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档