十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
尽管现在已经不是一个严重的问题,但是 IFS 环境变量曾经在老的 Unix shell 中导致了很多安全问题。 IFS 用来确定命令中什么样的分隔词被发送到原始的 Unix Bourne shell,并与其他环境变量一样被传递下去。通常 IFS 变量应该有一个空格、一个制表符和一个新行的值 -- 这些字符都会被作为一个空格字符来处理。但是攻击者可以将 IFS 设置为不怀好意的值,例如,他们可能向 IFS 添加一个“/”。这样,当 shell 试图运行 /bin/ls 时,老的 shell 将把“/”解释为一个空格字符 -- 也就是说 shell 将运行“bin”程序(不管在哪儿找到一个),并使用“ls”选项!这样攻击者就可以提供一个程序可以找到的“bin”程序。 值得欣慰的是,当今大部分的 shell 都对此进行了防范,当它们启动时至少会自动重新设置 IFS 变量 -- 包括 GNU bash,GNU/Linux 常用的 shell。GNU bash 还限制了 IFS 的使用,使之只用于扩展的结果。这就意味着减少了 IFS 的使用,而且,这样危险度也大大降低了 (早期的 sh 使用 IFS 来分离所有的词,甚至命令)。不幸的是,不是所有的 shell 都可以保护自己( Practical Unix Internet Security-- 参阅 参考资料 中的链接 -- 中有测试这一问题的样例代码)。尽管这一特定的问题已经(大部分)可以防范,但它仍以实例证明了没有经过检查的环境变量可以带来难以捉摸的问题。
创新互联是一家专注于成都做网站、网站建设与策划设计,洪江管理区网站建设哪家好?创新互联做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:洪江管理区等地区。洪江管理区做网站价格咨询:18980820575
求采纳
Linux下有一个特殊的环境变量叫做IFS,叫做内部字段分隔符(internal field separator)。IFS环境变量定义了bash shell用户字段分隔符的一系列字符。默认情况下,bash shell会将下面的字符当做字段分隔符:空格、制表符、换行符。
Bash shell会将上面的三个字符当做列表中新字段的开始。例如, 1 2 3 字符串在shell中会当做三个字段1,2,3。如果想要以逗号分隔字段,则要修改IFS的值,修改如下:
参考资料:
Linux下有一个特殊的环境变量叫做IFS,叫做内部字段分隔符(internal field separator)。IFS环境变量定义了bash shell用户字段分隔符的一系列字符。默认情况下,bash shell会将下面的字符当做字段分隔符:空格、制表符、换行符。可查看《Linux就该这么学》了解更多Linux介绍。