清理用户输入中的反引号字符

Sanitize backtick character in user input

我最近发现了 shell 注入,我有在 shell 环境中执行用户输入的代码 我需要清理输入以便没有反引号或其他恶意字符串。使用 str_replace() 并删除它们是否足够?

仅替换反引号不足以将用户提供的字符串安全地传递给 shell,因为除了反引号之外还有其他字符可能会导致麻烦。

PHP 有一个内置函数,您可以使用它:escapeshellcmd

请检查下面的 link How to prevent code injection attacks in PHP?

你有很多方法可以实现你想要的。正如你所说 "str_replace" 可以完成这项工作。您还可以使用

之类的正则表达式
$Content = preg_replace("/&#?[a-z0-9]+;/i","",$Content); 

您也可以使用 php_filters 来验证输入。