我有一个脚本,它接受用户输入并执行很多操作。我担心的一件事是它需要一个文件名并删除该文件。例如 rm -rf $arg1。
从技术上讲,用户可以在此参数中输入 / 并破坏内容。我该如何做到这一点,以便在实际执行 rm 命令之前转义所有符号(我的要求只是字母和数字,因为所有事情都发生在一个目录中)。
我想出了一个echo "$name" | grep -v symbols > $newname
我不确定这是否是一个好方法。您对此有何建议。
答案1
使用 grep 检查(对于
/
和*
):if echo "$user_cmd" | grep '*\|\/'; then ... fi
但是......您应该将其视为权限问题。将使用该脚本的用户分配到具有锁定权限的组。这比仅仅删除字符要好,因为句点 (
.
) 可以用于文件扩展名 (.JPG
) 和../../