Bash 中 read 的行为
在写这篇教程的时候本来想把 shell 语言批判一番,说什么太容易被注入,经常多打一个空格(见 bumblebee 事件)引发一场巨大灾难什么的大新闻,于是我就着手尝试各种能形成危险行为的输入,却没有能成功的……后来发现是自己比较 naive , echo
和 read
的行为并不像表面上那么直接。那我就直接贴测试代码和用例咯。
在写这篇教程的时候本来想把 shell 语言批判一番,说什么太容易被注入,经常多打一个空格(见 bumblebee 事件)引发一场巨大灾难什么的大新闻,于是我就着手尝试各种能形成危险行为的输入,却没有能成功的……后来发现是自己比较 naive , echo
和 read
的行为并不像表面上那么直接。那我就直接贴测试代码和用例咯。
你有听说过“Shell”语言吗?如果这个词汇对你不是太熟悉的话,那么你更有可能听说过“脚本”(script)这个东西。不同于它在戏剧范畴的意思(表演戏剧、拍摄电影等所依据的底本又或者书稿的底本),在计算机学中,脚本是指使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称宏或者批处理文件。说道脚本语言,我们可能更熟悉python或者javascript(都是眼下火热的脚本语言);不过追根溯源,脚本语言的历史可以说到Bourne shell,就是标题里提到的shell的意思。