检测危险的unix命令行元字符

时间:2011-11-01 09:10:37

标签: php linux unix web

我正在开发一个Web应用程序,它有一些api调用,可以为命令行操作发送参数。例如,(使用jquery),api调用如:

$.get('/api',{
function:function_1,
data:data
},funcion(){},'text')

可能会执行命令行,如:

php a.php data

在这种情况下,如果数据内容为"whatever;rm -rf *;",则将执行两个命令

  1. php a.php watever;
  2. rm -rf *;
  3. 我不想冒这个风险。

    我的问题是没有检测到某个字符是数据字符串的一部分,我的问题是知道应该查找哪些字符?

    我正在添加一个shell命令元字符列表。请指定哪些字符有风险以及哪些字符组合(如果有)有风险。


    注意: 取自:http://www.fmrib.ox.ac.uk/fslcourse/unix_intro/shell.html

    shell元字符包括:

    \ /< > ! $%^& * | {} []“'〜;

    注意2:如果您知道其他字符,请添加或评论,我可能会添加其他字符。

    注3:我的问题类似于sql注入可能发生的问题。当有人在搜索文本框中添加隐藏的查询时,但在我的情况下,问题在于shell命令。为防止sql注入,您可以查看this

2 个答案:

答案 0 :(得分:3)

您最好尝试在输入中定义允许的字符,并检查输入是否仅包含那些,即“白名单”方法。

答案 1 :(得分:2)