我需要从用户上传的文本文件中读取variables值。
我正在做一个系统的脚本:
resourceVersion=`cat userFile.txt` mkdir $resourceVersion ...
当我稍后使用$resourceVersion
variables作为其他命令的参数时,该文件的内容是否会以任何方式伤害系统?
编写安全代码的规则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
…