如果任何输入参数包含可能的shell注入命令,如何在Shell脚本中编写RegEx以使退出代码为1的脚本失败。一个或两个例子就足够了。请帮助。
这是代码段:
invalid_format="^.*[;&|].*$"
invalid_format2="rmdir"
if [ "$LOCAL_DIR" =~ "$invalid_format" -o "$LOCAL_DIR" =~ "$invalid_format2" ];
then
echo "Error! LOCAL_DIR cannot contain command chaining characters like ; && ||"
exit 1
fi
但是,它失败并显示以下错误:
[: too many arguments
答案 0 :(得分:0)
使用grep
并将您的字符串输入#!/bin/bash
STRING_TO_CHECK="abc"
REGEX="b"
echo "$STRING_TO_CHECK" | grep -E "$REGEX"
if [ $? -eq 1 ]
then
# regex not found
else
# regex found
fi
,然后检查返回值。
{{1}}
答案 1 :(得分:0)
谢谢大家..在这里,我已经完成了。
invalid_format="(^.[;&|].$)|(\brmdir\b)|(\bls\b)|(rm\s-)|(\bping\b)"
if [[ $LOCAL_DIR =~ $invalid_format ]]; then
echo "Error! LOCAL_DIR cannot contain command chaining characters like ; && || or possible shell injection commands"
exit 1