【问题标题】:Safe use exec with php安全使用 exec 与 php
【发布时间】:2015-03-16 08:29:02
【问题描述】:

如何在 php 中使用 safe exec

我正在尝试像这样使用 exec 执行命令:

exec("ejabberdctl register ". $_POST['username'] ." ". $_POST['password'])

在这个命令中,如果有人在密码中使用类似这样的东西

& free -m
&& free -m
;free -m

123456 & rm -rf /root
123456 ; rm -rf /root

.....等等

如何阻止 & 和 ;如果密码 --> (&&&&&&&&&&.....) 或 --> (;;;;;;;)

关于安全使用 exec 的任何想法?

【问题讨论】:

    标签: php exec shell-exec


    【解决方案1】:

    使用escapeshellarg()。它确保该值被解释为单个纯 shell 参数。因此,即使您将命令作为参数传递,它也不会被执行。

    $arg = $_POST['username'] ." ". $_POST['password'];
    exec("ejabberdctl register ".escapeshellarg($arg));
    

    【讨论】:

    • 如果密码是这样的呢:&free -m
    • && 如果你使用 escapeshellarg() 将不起作用。所以没问题。
    猜你喜欢
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2011-07-15
    • 2011-05-06
    • 2023-03-14
    • 2011-10-28
    • 2013-04-09
    相关资源
    最近更新 更多