使用cat从不受信任的文件中读取值是否有风险?

我需要从用户上传的文本文件中读取variables值。

我正在做一个系统的脚本:

resourceVersion=`cat userFile.txt` mkdir $resourceVersion ... 

当我稍后使用$resourceVersionvariables作为其他命令的参数时,该文件的内容是否会以任何方式伤害系统?

编写安全代码的规则1: 您必须清理您的用户input

至less通过--进入你mkdir子句,以防止操纵开关。

目前它可以用来以任意权限在任意位置创build目录。

本身,它可能不会导致违反,但你可以通过像这样的东西:

 -m 0777 /var/lib/mysql/newdb 

创build一个新的mysql数据库,任何人都可以写入。

这里还有一个拒绝服务攻击,因为每个空间都被视为一个新的目录,所以你可以传递32760个新的path来处理。

最后,一些伪文件系统对于新目录是敏感的,而这些方式你可能并不期望。 在Fedora上,例如/sys/fs/cgroup/newcgroup这样的/sys/fs/cgroup/newcgroup可以创build一个新的cgroup。 另外,在LIO子系统中,可以使用将目录写入/sys/kernel/config/target来通过iscsinetworking导出块设备(然后可以复制设备的全部内容)。

所以,不要这样做。

目前我可以添加一个世界可写的文件夹,如果userFile.txt包含-m 777 /.secretstorage
在我看来,已经够糟了,不能使用这样的构造。

用你发布的当前脚本是不正确的,注入一个不同的命令是不可能的。
但取决于哪个其他命令,你将使用这个variables,可能会变得更糟。
例如,如果你打算在你的程序结束时使用这个variables进行清理,而rm