"escapeshellarg"足够安全吗?

Arū*_*kas 5 php security exec youtube-dl

场景:

  1. 用户输入视频网址

  2. php下载视频 exec( "youtube-dl " . escapeshellarg($url) );

题:

它足够安全吗?

谢谢!

小智 6

escapeshellarg防止shell误解您的命令行,因此您在那里是安全的。但是,您仍然将用户输入传递给 youtube-dl。虽然这不是安全风险,但在某些情况下会失败。您需要添加--以确保用户的输入是 URL 而不是选项:

exec( "youtube-dl -- " . escapeshellarg($url) );
Run Code Online (Sandbox Code Playgroud)

这也将解决“URL”以破折号开头的问题。例如,-8F4YF_pH-4是有效的 YouTube 视频 ID。