我需要从服务器应用程序调用{{1}},其中部分网址由用户控制。如果我在服务器应用程序中使用wget
将参数存储在环境变量URL
中,那么在forked shell中执行
setenv()
我可以假设wget somehost/"$URL"
没有以任何方式扩展,它被完全解释为网址的一部分吗?这是否与Bourne shell兼容(例如,$URL
而不是sh
,例如Ubuntu)?
答案 0 :(得分:0)
shell将在$URL
命令调用(forks / execs)之前执行wget
的参数扩展。由于您的参数是双引号,因此不执行任何分词,“somehost /任何URL扩展为”将是一个参数。
ps(1)
输出中的其他用户可以看到结果为命令加args。
此外,如果系统上的ps(1)
实现支持-e
来显示环境(例如FreeBSD),那么存储在环境变量中的数据可能是可见的。
如果您的问题是,您是否可以通过这种方式隐藏敏感信息(如访问凭据),答案通常是“否”。