我对 bash 脚本的安全性有一些疑问。
我有一个名为 的脚本test.sh
,看起来像
#!/bin/bash
cat "$1"
是的,非常棒和无辜的脚本......但是当用户(比如使用这个 cgi 脚本的网络用户)给我一个参数
" ; rm -rf /*"
或者使用命令替换"
`rm -rf /*`"
它不是一个好的情况。
所以,这里有一个小测试:
touch test; ./test.sh " ; `rm test`" &>/dev/null; [[ -f "test" ]] && echo ":)" || echo ":("
这将打印出悲伤的脸。
我知道脚本的执行应该以某些具有受限权限的预定义用户(如 apache)身份运行。即使通过此选项访问网络空间文件或资源也存在安全风险。
这可以通过一些正则表达式等在每个脚本中轻松解决......但是,这真的应该在脚本中解决吗?还是在apache和linux中?