情景:
用户输入视频网址
php使用exec( "youtube-dl " . escapeshellarg($url) );
问题:
足够安全吗?
谢谢!
答案 0 :(得分:3)
escapeshellarg
会阻止 shell 误解您的命令行,因此您可以安全地使用它。但是,您仍然将用户输入传递给youtube-dl。虽然这不是安全风险,但在某些情况下会失败。您想添加--
以确保用户的输入是网址而不是选项:
exec( "youtube-dl -- " . escapeshellarg($url) );
这也将解决" URL"以破折号开头。例如,-8F4YF_pH-4
是有效的YouTube视频ID。
答案 1 :(得分:2)
是的,它足够安全。你可以检查它是否正常工作。
escapeshellarg()
在字符串周围添加单引号,并引用/转义任何现有的单引号,允许您将字符串直接传递给shell函数,并将其视为单个安全参数。此函数应用于将单个参数转义为来自用户输入的shell函数。
$arg = 'test\'test';
echo escapeshellarg($arg);
它会显示'test'\''test'
作为输出。所以你不能欺骗它。