Php 如何在URL中实现escapeshellarg?
用户通过名为username和name的HTML表单提供两个变量。 它们用于执行当前不安全的shell命令。 我有以下PHP代码:Php 如何在URL中实现escapeshellarg?,php,linux,Php,Linux,用户通过名为username和name的HTML表单提供两个变量。 它们用于执行当前不安全的shell命令。 我有以下PHP代码: (exec("cat /opt/application/userdata/$username/following | grep -w $name")) 我正在尝试实现escapeshellarg,但通过遵循官方PHP文档无法实现它,我尝试了: (exec("cat /opt/application/userdata/ .escapeshellarg($userna
(exec("cat /opt/application/userdata/$username/following | grep -w $name"))
我正在尝试实现escapeshellarg,但通过遵循官方PHP文档无法实现它,我尝试了:
(exec("cat /opt/application/userdata/ .escapeshellarg($username)/following | grep -w .escapeshellarg($name)"))
但这不起作用,我认为这是一个语法错误。
如何正确设置格式?escapeshellarg()函数是PHP内置函数,但您试图将其作为shell函数执行。只需将函数从字符串范围中拉出并连接结果,即可修复此问题:
exec(“cat/opt/application/userdata/”.escapeshellarg($username)。“/following | grep-w.escapeshellarg($name));
发生的情况是,您当前正在尝试在字符串中运行函数。这可以通过额外的步骤实现,但并不可取
您要做的是将字符串与函数的输出连接起来。
您可以通过以下方式将其内联:
exec('cat /opt/application/userdata/' . escapeshellarg($username) . '/following | grep -w ' . escapeshellarg($name))
(注意,我使用了单引号[”
),因为在字符串中没有进行扩展,这会加快速度并保持其独立性)
或者,您可以更早地执行该操作,只需在字符串中包含(“展开”)变量,就像您的第一个示例所提示的:
$username = escapeshellarg($username);
$name = escapeshellarg($name);
exec("cat /opt/application/userdata/$username/following | grep -w $name")
(注意,我使用了双引号[”
],因为字符串中发生了扩展)