清理用户输入中的反引号字符
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 来验证输入。
我最近发现了 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 来验证输入。